2011-04-06 52 views
0

我需要使用矩陣的每個連續行的傅立葉函數來避免使用for循環。我嘗試使用單元格數組,但不知道如何合適地使用它。 我的計劃是如何將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); 

它給??? 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

對一個圖像的每一行擬合一個函數是一個非常好的for循環。只要調用'cellfun',你就會失去可讀性,但不會有明顯的性能提升。 – Jonas 2011-04-06 20:37:27

回答

1

在本例中,FIT函數返回cfit類型的對象。該錯誤似乎表明CELLFUN無法將這些對象收集到類型爲cfit的數組中以作爲輸出返回。我會嘗試通過將'UniformOutput',false添加到最後一行來嘗試返回cfit對象的單元陣列

+0

thx幫助設置UniformOutput對於錯誤工作正常,但cellfun返回空單元陣列 – bartek 2011-04-06 21:14:47

+0

@bartek:奇怪的是,它對我來說工作正常(MATLAB R2010b)。你使用什麼版本?你的圖像是2D還是3D? – gnovice 2011-04-07 18:06:10

相關問題