matlab中,如何计算一个数组中的各种组合的和(不要重复)?
发布网友
发布时间:2022-04-29 09:57
我来回答
共2个回答
热心网友
时间:2022-06-25 20:21
在命令行输入:
>>SumArray([1 3 5])
即可得到正确结果。其中[1 3 5]可以换成任意的数组。
函数代码如下:
function Y = SumArray(X)
% Edit by Gleafty on May 4th, 2007
[M, N] = size(X);
if M~=1
error('The input of this function must be an array(1*N)!')
end
R = [1];
if N==1
Y = X;
else
for n = 2:N
R1 = [ones(1, 2^(n-1)-1); R];
R2 = [zeros(1, 2^(n-1)-1); R];
R3 = [1 zeros(1,n-1)]';
R = [R1 R2 R3];
end
Y = X * R;
Y = SimpleArray(Y);
end
function Y = SimpleArray(X)
N = length(X);
X1 = sort(X);
Y(1) = X1(1);
m = 1;
for n = 2:N
if X1(n)~=Y(m)
Y(m+1) = X1(n);
m = m+1;
end
end
热心网友
时间:2022-06-25 20:22
function r=allsubtotal(a)
r=[];
for i=1:length(a);
r=[r sum(nchoosek(a,i).',1)];
end;
r=unique(r);