【问题标题】:how to apply a matlab fit function to every row of matrix如何将matlab拟合函数应用于矩阵的每一行
【发布时间】:2011-04-07 15:24:05
【问题描述】:

我需要在矩阵的每一行都使用傅立叶函数,避免使用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 中的语法有问题,但不知道是什么

【问题讨论】:

  • 为图像的每一行拟合一个函数是for-loop 的完美使用。调用cellfun 所得到的只是可读性的损失,但性能不会有任何明显的提升。

标签: matlab matrix curve-fitting


【解决方案1】:

FIT 函数在此示例中返回 cfit 类型的对象。该错误似乎表明CELLFUN 无法将这些对象收集到cfit 类型的数组中以作为输出返回。我会尝试通过在最后一行添加'UniformOutput',false 来返回cfit 对象的元胞数组

【讨论】:

  • 感谢帮助设置 UniformOutput 可以正常处理错误但 cellfun 返回一个空单元格数组
  • @bartek:奇怪,它对我来说很好用(MATLAB R2010b)。你用的是什么版本?你的图像是 2D 还是 3D?
猜你喜欢
  • 2013-02-23
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多