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