我想提供两个参数来nlfilter功能的fun说法。我想通过使用我创建的功能assign_value的句柄来完成此操作。这是我的函数:MATLAB:传递两个参数nlfilter使用手柄
function y = assign_value(x, ii)
index= x([1 2 3 4 6 7 8 9]);
if ismember(ii, index)==1
x(5)= ii; % 'ii' is the cloud object ID
end
y=x;
end
我已经红了一些MATLAB文件(如1,2,3),看到一些答案(4,5等),但我仍然需要帮助解决我的具体的问题,以了解如何处理函数的工作。 这里是我想要做的(x是9by9双级矩阵)
ii= 127
y= nlfilter(x, [3 3], @assign_value)
我得到的错误是:
??? Subscripted assignment dimension mismatch.
Error in ==> nlfilter at 75
b(i,j) = feval(fun,x,params{:});
任何帮助将非常感激,在此先感谢。
ANSWER
感谢Acorbe的意见,我终于做到。正如我assign_value功能y输出是一个数组,并nlfilter的fun参数有只输出标量,我改变了我的功能:
function y = assign_value(x, ii)
index= x([1 2 3 4 6 7 8 9]);
if ismember(ii, index)==1
x(5)= ii; % 'ii' is the cloud object ID
end
y=x(5);
end
而且这样做的:
y= nlfilter(x, [3 3], @(x) assign_value(x, ii));
我的结果是好的。 再次感谢Acorbe的宝贵贡献。
2014-03-07
umbe1987