imho.ws |
![]() |
![]() |
![]() |
# 1 |
::VIP::
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
помогите разобраться с прогой в MatLab
я только начал его учить
![]() вот функция Код:
function B=matrix_cheak(A) n=1; for i=1:9 for a=1:9 if( v1(a)==A(i) ) v2(a)=v2(a)+1; else v1(n)=A(i); v2(n)=1; n=n+1; end end end end Код:
Error in ==> C:\MATLAB6p5\work\matrix_cheak.m On line 8 ==> if( v1(a)==A(i) ) |
![]() |
![]() |
# 5 |
Full Member
Регистрация: 11.12.2002
Сообщения: 864
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Drakosha дело говорит, и не только v1, no i A.
Код:
n=1; v1=1:9; A=1:9; for i=1:9 for a=1:9 if( v1(a)==A(i) ) v2(a)=v2(a)+1; else v1(n)=A(i); v2(n)=1; n=n+1; end end end П.С. А какая ошибка написано всего лишь одной строкой перед ошибкой : Код:
??? Undefined function or variable 'A'. Error in ==> Последний раз редактировалось crawler; 09.06.2004 в 19:37. |
![]() |
![]() |
# 6 | |||
::VIP::
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
или всё равно как до фора надо было обьявлять переменую? Цитата:
так если её обьявить в теле то значение матрицы уже будет другим ? Цитата:
Последний раз редактировалось inkognito; 09.06.2004 в 22:54. |
|||
![]() |
![]() |
# 7 | |||
Full Member
Регистрация: 11.12.2002
Сообщения: 864
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ысчо раз: ты пытаешься прочесть из массива переменную, которая не была определена.
Цитата:
![]() Размер А должен быть как минимум 1х9. тоже и для v1. Они должны быть определены (забиты значениями) до того как ты к ним обращаешься. Цитата:
Цитата:
И не надо иметь переменные с похожими названиями (а и А) - это очень плохо сказывается на отладке.Переименуй а в ind_a, например. Для дебуга зайди в редакторе в меню DEBUG, поставь галочку напротив "Stop if error". Тогда при ошибке прога будет останавливаться на месте где она случилась и ты сможешь посмотреть значения переменных и понять почему случилась ошибка. смарт-индент: автоматический формат кода. выдели кусок кода (или сразу весь), правый клик -> смарт-индент и будет тебе красота и счастье. |
|||
![]() |
![]() |
# 8 | ||
::VIP::
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
crawler извени за мою тупость
![]() но я не понял Цитата:
Цитата:
![]() или я что то не понял ![]() |
||
![]() |
![]() |
# 9 |
Full Member
Регистрация: 11.12.2002
Сообщения: 864
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
inkognito
Извиняю ![]() Просто НЕЛЬЗЯ обращатся к ячейке с несуществующим индексом. Код:
допустим А - одноразмерный массив v1(j) НЕ ОПРЕДЕЛЕН !!!! function B=matrix_cheak(A) n=1; for i=1:length(A) for j=1:length(v1) % v1(j) НЕ ОПРЕДЕЛЕН !!!! if( v1(j)==A(i) ) % а ты к нему обращаешься нисмотря на это ;) v2(j)=v2(j)+1; else v1(n)=A(i); v2(n)=1; n=n+1; end end end end снова, в твоей функции может случится так что некоторые ячейки v2 не будут определены ТОБОЙ. В таком случае Матлаб автоматически забьет неопределенные ячейки нулями, а размер v2 будет определен последней определенной ячейкой. Т.Е. если ты определишь Код:
v2=[]; v2(14)=53; Последний раз редактировалось crawler; 13.06.2004 в 19:40. |
![]() |
![]() |
# 10 | ||
::VIP::
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
crawler на счет v я понял;
а вот как быть с матрицей нет, вот допустим самая простая функция Цитата:
Цитата:
|
||
![]() |
![]() |
# 11 |
Full Member
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557
![]() ![]() ![]() ![]() |
а как ты ето запускаешь?
vot (glupii) primer, _vajno_ polojit ego v file fun1.m --------------------------------- function f = fun1(x) %% This is the function f(x) f(1) = x(1)^3 + x(1)*x(2)^3 - 9; f(2) = 3*x(1)^2*x(2) - x(2)^3 - 4; ---------------------------------------- |
![]() |
![]() |
# 12 | |||
::VIP::
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Drakosha я ложил в фаил
например Цитата:
внем ввожу пример простой функции Цитата:
потом закрываю его сохраняю под этим именем, потом из самого матлаба открываю фаил abc.m делаю в нём run и внём выдаёт ошибку, часть черная часть красная Цитата:
|
|||
![]() |
![]() |
# 14 |
Full Member
Регистрация: 11.12.2002
Сообщения: 864
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
inkognito
ну ты даешь! А если бы ты в С такое написал, компайлер бы не заругался? Во первых ты запускаешь ФУНКЦИЮ abc без входных аргументов. А потом удивляешься что А не определен. Разницу между скриптами и функциями знаешь ? Вот она! Теперь ты ее можешь почувствовать. Испаравляй как сказал Drakosha. а во вторых как ты хочешь получать назад значения ? Код:
function Z=abc(A) Z=A-1; end Programming and Data Types: M-File Programming: Functions |
![]() |
![]() |
# 15 | ||
::VIP::
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
так как сказал Drakosha всё работает, но всё равно как отдельная функция получается ошибка ![]() помогите плиз сделать это как отдельную функцию Цитата:
где взять не подскажешь? ![]() |
||
![]() |
![]() |
# 16 | |
Full Member
Регистрация: 11.12.2002
Сообщения: 864
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
ты не можешь запускать функцию из дебаггера (окно редактора). Ты должен сделать скрипт (еще один файл) и запускать функцию через него, а не саму функцию. в скрипте напиши: Код:
X = magic(3); res = abc (X); disp (res); ![]() Последний раз редактировалось crawler; 14.06.2004 в 13:34. |
|
![]() |
![]() |
# 17 |
::VIP::
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
а чем скрипт отличается от функции?
а почему debug->step ne активный ? хотел посмотреть по ход функции по шагам но оно не активное чего то.. ![]() вроде нашел как делать step там для этого бреёк поинт вроде надо ставить, но не пойму где отображаются значения переменых возле которых стоит стрелка вроде нашел как делать step там для этого бреёк поинт вроде надо ставить, но не пойму где отображаются значения переменых возле которых стоит стрелка Последний раз редактировалось inkognito; 15.06.2004 в 19:42. |
![]() |
![]() |
# 18 |
Full Member
Регистрация: 11.12.2002
Сообщения: 864
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Серьезно почитай хелпы, там все написано.
Скрипт не принимает входных параметров и не возвращает значений. При вызове скрипта из кода не опускаешься по стеку функций и "скоп" остается тот же. Значения можно посмотреть в редакторе (подведи к переменноймышку), или в окне самого матлаба (введи имя перемнной). |
![]() |