2013-07-07 49 views
0

我是Matlab新手。我需要矩陣比較的幫助。如何比較三個矩陣的值是否相等?

我有三個矩陣:ř小號Ť(尺寸:95956 X 1),我需要比較所有它們的元素的和看哪些元素是相等的。然後我們用第四個矩陣乘以相同的值。

在Matlab文件中,我讀取座標並將它們分成三個矩陣。從而獲得保存在「data.mat」中的矩陣R,S和T.然後,我在另一個文件「data.mat」讀取和使用For循環:

for t=1:1:length(CoordinateIndex) 
    index = R == S; 
    ts=ts+1; 
end 

這是正確的,我怎麼會成倍只有那些等於第四矩陣值?

+0

在所有三個矩陣中的相同位置上的值是否相等? – Mahm00d

+0

嗨Brasofilo。 並非每個矩陣的列中都有95956的值。我需要的是檢查相同的值。例如:在矩陣中,R是一個值0.2589,我需要檢查矩陣S和T是否爲矩陣的值0.2589。 請你能幫我解決這個問題。非常感謝 你是巴西人嗎? – Jadielcsilva

回答

0

使用一些簡單的例子,矩陣和logical indexing,我們可以發現,是其中通過全部三個共同的價值觀:

R = [1:4 1:4 1:4 1:4]; 
S = [1:2 1:2 1:4 1:6 1:2]; 
T = [1:6 1:2 1:8]; 
R_common = R(R==S&R==T); 

這將產生:

R_common = 

    1  2  1  2  3  4 

如果你想要的是常見的指數在所有三個矩陣中,使用:

I = find(R==S&R==T); 

其中給出

I = 
    1  2  9 10 11 12 

編輯:作爲@Adiel建議,您可能感興趣的是常見的矩陣中無論其在矩陣位置的值。這可以簡單地通過intersect功能來完成(見this):

RST_intersection = intersect(intersect(R,S),T) 

在我的例子矩陣這給

RST_intersection = 

    1  2  3  4 

注意,參數intersect可以是不同的長度,這可能會有幫助。

+0

您好Horchler 非常感謝幫助我,因爲我說我是使用MatLab的新手。每當我使用命令R_common = R(R == S &R==T);和I = find(R == S &R==T);,我得到以下響應:空矩陣:0 - 1。 請你能繼續幫助我這個問題非常感謝你 – Jadielcsilva

+1

@Jadielcsilva這意味着在所有三個矩陣的SAME位置沒有共同的值,你需要在相同位置有相同的值還是一般的相等值(例如,'S(1) = R(12)'好?)? – Adiel

+0

@Jadielcsilva:你可以檢測到['isempty'](http://www.mathworks.com/help/matlab/ref/isempty.html)函數沒有共同值的情況。 – horchler