2013-04-11 19 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

相关问题