如何知道使用matlab重复某些组合

时间:2015-02-01 11:40:27

标签: matlab repeat

请允许我发布此管理员:

好,所以这是我的问题,我想生成a和b的所有组合,例如1和2,具有(1,2),(2,1),( - 1,2)的组合,和(2,-1),所以4组合,但我只想要一个组合作为所有4个组合的代表,例如仅在输出中显示(1,2)。所以这是我的草案代码:

fprintf(' a b z \n _ _ _ \n');
for a= -1:3
    for b=-1:3
        z=a^2 + b^2

    end
end

ctr=1;
i(:,3) %the position of z in array
for x =1:length(z) %the length of z array 
    if z = i(1,1)
        ctr = ctr +1;
    else
        fprintf(' %d %d %d\n',a,b,z);
    end
end

所以这就是我想要的输出:

 a b    z   no. of repetitions
 1 1    2   4
 1 0    1   4
 1 2    5   4
 1 3    10  4
 0 2    4   2
 0 3    9   2
 2 2    8   1
 2 3    13  2
 3 3    18  1
 0 0    0   1

没有。重复意味着a和b可以产生多少种可能的组合

1 个答案:

答案 0 :(得分:0)

in=-1:3
%calculate z
[a,b]=meshgrid(in);
z=a.^2+b.^2;
%sort absolute values ascending, which allows to use unique
ac=sort(abs([a(:) b(:)]),2);
%use unique to identify duplicates
[f,g,h]=unique(ac,'rows');
%count
cnt=histc(h,1:max(h));
disp([a(g),b(g),z(g),cnt])

输出结果为:

0    0    0    1
1    0    1    4
2    0    4    2
3    0    9    2
1    1    2    4
2    1    5    4
3    1   10    4
2    2    8    1
3    2   13    2
3    3   18    1