imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 09.06.2004, 15:59     # 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) )
почему так?
Комбинатор вне форума  
Старый 09.06.2004, 16:28     # 2
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
может быть потому что v1(a) не определен ?
Drakosha вне форума  
Старый 09.06.2004, 16:38     # 3
Комбинатор
::VIP::
 
Аватар для Комбинатор
 
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607

Комбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор Сэнсэй
Drakosha если я определяю его например v1=[1:9]; то проблемма таже
Комбинатор вне форума  
Старый 09.06.2004, 19:19     # 4
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
точнее, значение в в1(а) не определено, а ты его читаешь


сорри, глупость сморозил.

Последний раз редактировалось Drakosha; 09.06.2004 в 19:42.
Drakosha вне форума  
Старый 09.06.2004, 19:32     # 5
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
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.
crawler вне форума  
Старый 09.06.2004, 22:51     # 6
Комбинатор
::VIP::
 
Аватар для Комбинатор
 
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607

Комбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор Сэнсэй
Цитата:
Drakosha:
точнее, значение в в1(а) не определено, а ты его читаешь
так у меня же там цикл т.е. а принимает значения от 1 до 9
или всё равно как до фора надо было обьявлять переменую?

Цитата:
crawler:
Drakosha дело говорит, и не только v1, no i A.

Код:
n=1;
v1=1:9;
A=1:9;
.........................
так это же функция и А это матрица, она её должна принять.
так если её обьявить в теле то значение матрицы уже будет другим
?

Цитата:
и пользуйся смарт-индентом, а то код нечитаемый .
а что это такое?

Последний раз редактировалось inkognito; 09.06.2004 в 22:54.
Комбинатор вне форума  
Старый 10.06.2004, 11:32     # 7
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Ысчо раз: ты пытаешься прочесть из массива переменную, которая не была определена.
Цитата:
А это матрица, она её должна принять
, да не заметил
Размер А должен быть как минимум 1х9. тоже и для v1. Они должны быть определены (забиты значениями) до того как ты к ним обращаешься.
Цитата:
X=1:4;
Y=X(5)
работать не будет,а
Цитата:
X=1:6;
Y=X(5)
будет

И не надо иметь переменные с похожими названиями (а и А) - это очень плохо сказывается на отладке.Переименуй а в ind_a, например.

Для дебуга зайди в редакторе в меню DEBUG, поставь галочку напротив "Stop if error". Тогда при ошибке прога будет останавливаться на месте где она случилась и ты сможешь посмотреть значения переменных и понять почему случилась ошибка.



смарт-индент: автоматический формат кода. выдели кусок кода (или сразу весь), правый клик -> смарт-индент и будет тебе красота и счастье.
crawler вне форума  
Старый 10.06.2004, 12:34     # 8
Комбинатор
::VIP::
 
Аватар для Комбинатор
 
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607

Комбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор Сэнсэй
crawler извени за мою тупость
но я не понял
Цитата:
crawler:
Размер А должен быть как минимум 1х9. тоже и для v1. Они должны быть определены (забиты значениями) до того как ты к ним обращаешься.
А если например матрица может быть любой, тоесть мне надо её принять, и она может быть например один раз 7*7 а другой раз 10*10, то как быть тогда. так как если я её определю в теле функции например как 7*7 то она не будет работать для матриц большей размерности чем 7*7.


Цитата:
crawler:
смарт-индент: автоматический формат кода. выдели кусок кода (или сразу весь), правый клик -> смарт-индент и будет тебе красота и счастье
что то не вижу не каки изменений
или я что то не понял
Комбинатор вне форума  
Старый 13.06.2004, 19:35     # 9
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
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
то есть v1 нужно определить до входа в цикл

снова, в твоей функции может случится так что некоторые ячейки v2 не будут определены ТОБОЙ. В таком случае Матлаб автоматически забьет неопределенные ячейки нулями, а размер v2 будет определен последней определенной ячейкой. Т.Е. если ты определишь
Код:
v2=[];
v2(14)=53;
то размер v2 будет 1х14, a первые 13 ячеек будут заполненены нулями.

Последний раз редактировалось crawler; 13.06.2004 в 19:40.
crawler вне форума  
Старый 14.06.2004, 00:54     # 10
Комбинатор
::VIP::
 
Аватар для Комбинатор
 
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607

Комбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор Сэнсэй
crawler на счет v я понял;

а вот как быть с матрицей нет, вот допустим самая простая функция
Цитата:
function Z=abc(A)
A-1;
end
и он мне опять пишет что А не определён
Цитата:
??? Input argument 'A' is undefined.

Error in ==> C:\MATLAB6p5\work\abc.m
On line 2 ==> A-1;
тоесть неужели я не могу например как в С++ например, чтоб А я принимал из вне? а не определял её внутри?
Комбинатор вне форума  
Старый 14.06.2004, 01:35     # 11
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
а как ты ето запускаешь?

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;
----------------------------------------
Drakosha вне форума  
Старый 14.06.2004, 10:12     # 12
Комбинатор
::VIP::
 
Аватар для Комбинатор
 
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607

Комбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор Сэнсэй
Drakosha я ложил в фаил
например

Цитата:
Drakosha:
а как ты ето запускаешь?
например открываю окно матлаба, там ввожу edit появляется окно
внем ввожу пример простой функции
Цитата:
function Z=abc(A)
A-1;
end
потом жму save as.. даю файлу имя abc.m
потом закрываю его сохраняю под этим именем, потом из самого матлаба
открываю фаил abc.m делаю в нём run
и внём выдаёт ошибку, часть черная часть красная
Цитата:
Warning: File: C:\MATLAB6p5\work\abc.m Line: 3 Column: 1
Unmatched "end".
(Type "warning off MATLAB:m_warning_end_without_block" to suppress this warning.)

??? Input argument 'A' is undefined.

Error in ==> C:\MATLAB6p5\work\abc.m
On line 2 ==> A-1;
Комбинатор вне форума  
Старый 14.06.2004, 11:04     # 13
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
а зачем отрывать файл? Надо сделать так:

abc(4) <enter>

и получишь 3
Drakosha вне форума  
Старый 14.06.2004, 11:25     # 14
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
inkognito
ну ты даешь! А если бы ты в С такое написал, компайлер бы не заругался?

Во первых ты запускаешь ФУНКЦИЮ abc без входных аргументов. А потом удивляешься что А не определен. Разницу между скриптами и функциями знаешь ? Вот она! Теперь ты ее можешь почувствовать. Испаравляй как сказал Drakosha.

а во вторых как ты хочешь получать назад значения ?
Код:
function Z=abc(A)
Z=A-1;
end
Я тебе рекомендую посмотреть демки и их код, а также посмотри хелп на тему
Programming and Data Types: M-File Programming: Functions
crawler вне форума  
Старый 14.06.2004, 11:56     # 15
Комбинатор
::VIP::
 
Аватар для Комбинатор
 
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607

Комбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор Сэнсэй
Цитата:
Drakosha:
а зачем отрывать файл?
мне надо сделать именно как отдельную функцию.
так как сказал Drakosha всё работает, но всё равно как отдельная функция получается ошибка

помогите плиз сделать это как отдельную функцию

Цитата:
crawler:
Я тебе рекомендую посмотреть демки и их код, а также посмотри хелп на тему
Programming and Data Types: M-File Programming: Functions
да, я искал самые простые примеры функций чтоб разобраться, но что то не нашел.
где взять не подскажешь?
Комбинатор вне форума  
Старый 14.06.2004, 13:20     # 16
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Цитата:
inkognito:
где взять не подскажешь?
У тебя хелп не установлен ????????? Если нет- установи, без него работать невозможно, если да то в меню Матлаба Help->Full Product Family Help, а там выбираешь MATLAB->Programming and Data Types-> M-File Programming-> Functions

ты не можешь запускать функцию из дебаггера (окно редактора). Ты должен сделать скрипт (еще один файл) и запускать функцию через него, а не саму функцию.

в скрипте напиши:
Код:
X = magic(3);
res = abc (X);
disp (res);
и будет тебе счастье .

Последний раз редактировалось crawler; 14.06.2004 в 13:34.
crawler вне форума  
Старый 15.06.2004, 20:02     # 17
Комбинатор
::VIP::
 
Аватар для Комбинатор
 
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607

Комбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор Сэнсэй
а чем скрипт отличается от функции?

а почему debug->step ne активный ? хотел посмотреть по ход функции по шагам но оно не активное чего то..

вроде нашел как делать step там для этого бреёк поинт вроде надо ставить, но не пойму где отображаются значения переменых возле которых стоит стрелка

вроде нашел как делать step там для этого бреёк поинт вроде надо ставить, но не пойму где отображаются значения переменых возле которых стоит стрелка

Последний раз редактировалось inkognito; 15.06.2004 в 19:42.
Комбинатор вне форума  
Старый 16.06.2004, 13:50     # 18
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Серьезно почитай хелпы, там все написано.

Скрипт не принимает входных параметров и не возвращает значений. При вызове скрипта из кода не опускаешься по стеку функций и "скоп" остается тот же.

Значения можно посмотреть в редакторе (подведи к переменноймышку), или в окне самого матлаба (введи имя перемнной).
crawler вне форума  
Старый 27.03.2005, 13:09     # 19
Комбинатор
::VIP::
 
Аватар для Комбинатор
 
Регистрация: 12.04.2004
Адрес: подводная лодка ОфПомОчБар
Сообщения: 607

Комбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор СэнсэйКомбинатор Сэнсэй
Скажите, как написать в matlab функцию которая делает accumulated histogram какой то картинки?
Комбинатор вне форума  
Старый 05.04.2005, 10:16     # 20
a_ber
Newbie
 
Регистрация: 25.11.2003
Адрес: Near monitor
Сообщения: 49

a_ber Путь к славе только начался
Сделать обычный histogram через hist или imhist, а далее просуммировать
a(i) = sum_{j=1:i} b(j) -- извини нет под рукой матлаба, по моему есть спецальная фунция для этого, но и руками не сложно...
a_ber вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 23:28.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.