2013-04-11 48 views
0

早上好/下午〜Matlab-列3的輸出值,當列1的元素是A時,列2的元素是B使用循環?

我有一個矩陣H大小爲6800x3。 在整個矩陣中,我需要找到第3列的所有值,[col 1 = A和col 2 = B]。對於col 1和col 2的所有組合。

我怎樣才能通過循環找到值?

[M N]= size(H); %M = 6800, N = 3 
x = H(:,1);  % column 1 
y = H(:,2);  % column 2 
z = H(:,3);  % column 3 
for i= 1:M 
    if H(M:1)==A && H(M:2)==B %for every combination of x and y 
    Output=Z(M,3);    %Output all value of Z 
end 

任何幫助將不勝感激。 = d

謝謝〜

例如,

H = [1 2 1 ;... 
    1 2 3 ;... 
    2 2 5 ;... 
    1 2 8 ] 

爲A = 1,B = 2,

z = [1 3 8] 

像這樣..

+0

不應該是'Output = z(M,3)'?或沿着這條線? – Shai 2013-04-11 07:05:03

+0

因此,對於'x(3)'和'y(6)'的組合,'Output'中你想要什麼'z'? – Dan 2013-04-11 07:09:25

+0

你能提供一個輸入和輸出的例子嗎? – 2013-04-11 07:16:21

回答

1

你可以做它沒有圈

Output = H(H(:,1) == A & H(:,2) == B, 3); 

例如:

>> H = [1 2 1 ;... 
     1 2 3 ;... 
     2 2 3 ;... 
     1 2 8 ] 
>> A = 1; B = 2; 
>> Output = H(H(:,1) == A & H(:,2) == B ,3) 
Output = 
    1 
    3 
    8 
+0

感謝您的回覆!我需要找到x(第1列)和y(第2列)的所有組合。其中A和B是x和y的值。 – user2269065 2013-04-11 07:07:48

+0

@ user2269065你甚至試過我的代碼? – Shai 2013-04-11 07:39:28

+0

是的,它適用於這個例子!謝謝!然而對於大小爲(6800x3)的原始矩陣,爲了找到X和Y的所有組合(A和B),我認爲循環是必要的? – user2269065 2013-04-11 07:47:58

0

如果我理解正確的話,你想通過1列和2 這組是做的一個方法:

H = [1 2 1 ;... 
    1 2 3 ;... 
    2 2 5 ;... 
    1 2 8 ;... 
    2 2 9]; 

[~, I, J] = unique(H(:, 1:2), 'rows'); 
result = accumarray(J, (1:length(J))', [], @(x) {H(x, :)}); 

而結果將是:

>> result{:} 

ans = 

    1  2  3 
    1  2  8 
    1  2  1 


ans = 

    2  2  9 
    2  2  5 
+0

感謝您的回覆!有答案=) – user2269065 2013-04-16 11:16:04

+0

如果這確實是你要找的,你應該考慮接受答案;) – ValarDohaeris 2013-04-18 12:50:35

相關問題