0
我有一个列排序列的矩阵M
(比方说c
),即:应用的功能阵列,以矩阵
M = sortrows(M,c)
我需要一个函数应用于矩阵中的每一行,并且此功能取决于用于排序的列c
中的值。例如,如果列c
是向量[1 1 1 2 2 2 3 3 3 3 3]'
,我需要为行1至3调用f1
,将行4至6调用f2
,将行7至11作为参数调用f3
。
此外,我想调用每个函数,将列c
中包含相同值的所有行作为参数传递,以避免在行上使用循环太慢。有一种(非常)快速的方式来做到这一点? (如果排序M
没有必要,它会更好)。
谢谢。
我精确我需要一些代码(M这里没有排序,因为它似乎没有必要):
function test
M=zeros(4,2);
c=2;
M(1:2,2)=[3,6]';
M(3:5,2)=[1,3,1]';
M(6:10,2)=[3,6,1,6,3]';
function res = f1(y1,y2)
res=[1,1,1];
end
function res = f3(y1,y2)
res=[2,2,2];
end
function res = f6(y1,y2)
res=[3,3,3];
end
我们:
M =
0 3
0 6
0 1
0 3
0 1
0 3
0 6
0 1
0 6
0 3
现在各行会的说法函数fi,i = 1,... n,其中i = c列中的值,即以上例为例:
f3以行1,4,6,10为参数,f1以行3, 5,8作为参数,f6以2,7和9作为参数。
我该怎么做,而不使用循环?
我不是MATLAB附近的时刻对此进行测试,我希望我的语法正确。 –
谢谢,但我得到一个错误:()-indexing必须出现在索引表达式的最后 – Gilbert
我忘了提及,fi必须返回一个向量,而不是标量。准确评论可能吗? P.S我可以克隆该函数,以便每个克隆都可以返回该向量的每个标量元素,但这意味着将该函数调用的次数与向量的长度一样多,速度很慢。 – Gilbert