excel有一个等式或函数来组合不同列中的数字,如下图所示。在matlab中拥有相同的数据,我如何将数字组合在不同的列中。
有d数据:
a b c d
1 1 1 3
2 1 0 5
1 2 5 30
3 4 1 26
-1 1 1 3
因为111和-111具有相同的d值,所以我将它组合使得第一列中的第一个单元格变为111,-111并且它们的d变为6因为我将它加起来,所以matlab可以这样做吗?感谢
答案 0 :(得分:0)
a=[1 1 1 3;2 1 0 5; 1 2 5 30; 3 4 1 26; -1 1 1 3]
len=size(a);
x2=[]
for i=1:len(1)
s=num2str(a(i,1:len(2)-1));
s=s(s~=' ');
x2(i,:)=[str2num(s) (a(i,len(2)))];
end
结果:
x2 =
111 3
210 5
125 30
341 26
-111 3
现在找到重复的指数:
u=unique(x2(:,2));
n=histc(x2(:,2),u);
ind=find(x2(:,2)==u(n>1))
结果:
ind =
1
5
现在好了总结并结合:
xx=x2(ind,:)
ss=sum(xx(:,2));
s=num2str(xx(:,1)');
s=strrep(s, ' ', ',')
x2(min(ind),2) = ss;
x2(ind(ind~=min(ind)),:) = []
C = num2cell(x2);
C(min(ind),1) = cellstr(s)
最终结果是:
C =
'111,-111' [ 6]
[ 210] [ 5]
[ 125] [30]
[ 341] [26]