M
私は、行が1つの列でソートされた行列を持っています(たとえばc
、 )、つまり:
M = sortrows(M,c)
行列の各行に関数を適用する必要があります。この関数は、c
並べ替えに使用される列の値に依存します。たとえば、 columnc
が vector の場合、行 1 ~ 3、行 4 ~ 6、および行 7 ~ 11 を引数として[1 1 1 2 2 2 3 3 3 3 3]'
呼び出す必要があります。f1
f2
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 を引数として指定します。
ループを使用せずにどうすればそれを行うことができますか?