как применить функцию подгонки matlab к каждой строке матрицы - PullRequest
0 голосов
/ 06 апреля 2011

Мне нужно соответствовать функции Фурье для каждого последующего ряда матрицы, избегая использования петли for. Я пытался использовать массив ячеек, но не знаю, как использовать его с подгонкой. Моя программа

I=imread('test.tif','tif');  
I=double(I);  
nat=num2cell(I,1);  
wy_I=cellfun(@size,nat, 'UniformOutput', false);  
we_I=cellfun(@(x)1:x(1), wy_I, 'UniformOutput', false);  
wyn=cellfun(@(x,y)fit(x',y,'fourier1'), we_I, nat);   

Это дает ??? Error using ==> cellfun cfit type is not currently implemented., вероятно, массив ячеек не является решением этой проблемы. Как решить эту проблему? Спасибо

Обновление

wyn=cellfun(@(x,y)fit(x',y,'fourier1'), we_I, nat, 'UniformOutput',false);  

работает без ошибок, но в wyn есть только пустые ячейки
Я проверяю это для одного ряда

j=cell2mat(we_I(1,1))  
k=cell2mat(nat(1,1))  
z=fit(j',k,'fourier1')  

и z содержат хорошие значения для модели
Я делаю что-то не так с синтаксисом в cellfun, но понятия не имею, что

1 Ответ

1 голос
/ 07 апреля 2011

Функция FIT возвращает объект типа cfit в этом примере. Ошибка может указывать на то, что CELLFUN не может собрать эти объекты в массив типа cfit для возврата в качестве вывода. Вместо этого я бы попытался вернуть массив ячеек из cfit объектов, добавив 'UniformOutput',false к последней строке.

...