如何使用matlab组合不同列中的数字

时间:2015-02-22 04:29:30

标签: matlab

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

enter image description here

因为111和-111具有相同的d值,所以我将它组合使得第一列中的第一个单元格变为111,-111并且它们的d变为6因为我将它加起来,所以matlab可以这样做吗?感谢

1 个答案:

答案 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]