2011-04-06 4 views
0

매트릭스의 연속 행마다 푸리에 함수를 사용하여 피하기 위해 for 루프를 사용하지 않아야합니다. 나는 세포 배열을 사용하려했지만 어떻게 사용하는지 잘 모른다. 내 프로그램은 ??? Error using ==> cellfun cfit type is not currently implemented. 아마 셀 어레이는이 문제에 대한 해결책이 아니다 제공매트릭스의 모든 행에 matlab에 맞는 함수를 적용하는 방법

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); 

입니다. 이 문제를 해결하는 방법? 감사

업데이트

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

이미지의 모든 행에 함수를 넣는 것은'for' 루프를 완벽하게 잘 사용합니다. 'cellfun' 호출로 얻을 수있는 것은 가독성을 상실하는 것 뿐이지 만 눈에 띄는 성능 향상은 없을 것입니다. – Jonas

답변

1

FIT 함수는이 예제에서 cfit 유형의 객체를 반환합니다. CELLFUN은 이러한 개체를 cfit 배열로 수집하여 출력으로 반환 할 수 없다는 오류가 표시됩니다. 대신 셀 배열cfit 개체를 마지막 줄에 'UniformOutput',false을 추가하여 반환하려고합니다.

+0

도움말 설정을위한 thx UniformOutput은 오류에 대해서는 정상적으로 작동하지만 cellfun은 빈 셀 배열을 반환합니다. – bartek

+0

@bartek : 이상하게도 잘 작동합니다 (MATLAB R2010b). 어떤 버전을 사용하고 있습니까? 귀하의 이미지가 2-D 또는 3-D입니까? – gnovice

관련 문제