2012-09-07 61 views
3

我不知道這是不可能的,沒有迭代矩陣,但這裏有問題。對於任何給定的矩陣矩陣表示'M',並且特定的值表示'鍵'。基於matlab中的條件的每個細胞明智的操作

我要計算一個新的矩陣(說「NM」),使得

if M(i,j) < key; compute NM(i,j) using formula 1, 
if M(i,j) = key; compute NM(i,j) using formula 2, and 
if M(i,j) > key; compute NM(i,j) using formula 3 

的操作的輸出必須是相同的維數爲M.希望的新的方陣的問題是清楚。

在此先感謝

回答

2

這聽起來像你想這樣一個純粹的矩陣解決方案,所以我會回答這種方式。 (您在題目中使用了cell這個詞,它在Matlab中有特定的含義)

首先,您需要將矩陣NM定義爲與M相同的大小,只需使用一個來定義另一個即可。然後使用邏輯索引來僅將值應用於所需的矩陣元素。

NM=M; 
NM(M < key) = formula1(NM(M < key)); 
NM(M == key) = formula2(NM(M == key)); 
NM(M >= key) = formula3(NM(M > key)); 

這裏是一種將單個式NM=M+1到矩陣元件,其小於0.5的說明性示例。

>> M=rand(3) 

M = 

0.0623 0.7783 0.0097 
0.7011 0.2843 0.7337 
0.1984 0.2123 0.9778 

>> NM=M; 
>> NM(M<.5)=M(M<.5)+1 

NM = 

1.0623 0.7783 1.0097 
0.7011 1.2843 0.7337 
1.1984 1.2123 0.9778 
1

我覺得你只是想這樣做

NM(M < key) = formula1; 
NM(M == key) = formula2; 
NM(M > key) = formula3; 

根據您的公式,您可能需要M的值傳遞給函數,即

NM(M < key) = formula1(M(M < key));