0

早安/午安~

我有一个H大小为 6800x3 的矩阵。我需要在整个矩阵中为 [col 1 = Aand col 2 = ] 找到第 3 列的所有值。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]

像这样的东西。。

4

2 回答 2

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
于 2013-04-11T07:03:53.440 回答
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
于 2013-04-12T08:41:42.233 回答