我有这样的矢量:
A=[3 4 5 6];
我想获得一个新的Matrix B,它由A元素的所有可能缩放组合组成,避免只有一个元素的行(然后每行至少有两个元素),例如:
B=[3 4 5 6;
3 4 5 0;
3 4 0 0;
0 4 5 6;
0 0 5 6;
3 0 5 6;
3 0 5 0;
0 0 5 6;
3 4 0 6;
0 4 0 6;
3 4 0 0;
etc...
];
你能帮我吗?
提前致谢
答案 0 :(得分:1)
这是一种方法:
A = [3 4 5 6]; % data
N = 2; % minimum number of elements that should be present
p = dec2bin(1:2^numel(A)-1)-'0'; % binary pattern. Each row is a combination
s = sum(p,2)>=N; % index to select rows of p that have at least N ones
result = bsxfun(@times, A, p(s,:)); % multiply with singleton expansion
在您的示例中,这给出了
result =
0 0 5 6
0 4 0 6
0 4 5 0
0 4 5 6
3 0 0 6
3 0 5 0
3 0 5 6
3 4 0 0
3 4 0 6
3 4 5 0
3 4 5 6