全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2529 7
2008-05-07

我有矩阵A=
1   123   223  1
2   321   212  1
3   234   234  0 

我想生成矩阵B,要分类汇总!
B中的第一行为:A中所有第四列值为1的所有行加总,在此例中即A的第一行和第二行的对应元素和。
B中的第二行为:A中所有第四列值为0的所有行加总。在此例中即为A的第三行。

我根据xiaoxiaoyishui的帮助,现在已经搞掂,

只要把分类的项目放到最后一列就可以实现分类汇兑了!

clear,clc
A=[1 2 4 1;
2 3 4 1;
3 5 6 2;
4 7 8 2
5 3 4 2];
C=sort(A(:,end)');
D(1)=C(1);
for i=length(D)+1:length(C)
if C(i) > C(i-1)
    D(length(D)+1)=C(i);
end
end
C=D
B=zeros(length(C),size(A,2));
ii=0;
for k=1:length(C)
   for i=find(A(:,size(A,2))==C(k))
   D=A(i,1:size(A,2));
   B(k,1:size(A,2))=sum(D);
   end
B(k,size(A,2))=k;
end
B

[此贴子已经被作者于2008-5-8 3:07:12编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2008-5-7 22:58:00

关于第二个问题:

a=[1 123 223 1;
2 321 212 1;
3 234 234 0];
b=zeros(2,4);%定义矩阵大小
for i=2:3
if a(i,4)==a(1,4)  %找到和第一行第四列的元素相同的行
for j=1:4
b(1,j)=a(1,j);
b(1,j)=b(1,j)+a(i,j);   %累加
end
end
end
b(2,:)=sum(a)-b(1,:);   %总和减去部分,即为余下部分

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-5-7 23:00:00

关于第一个问题我只知导入时会分开为两部分,一个是数字部分,另一个为字符,但不知两者还可组合

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-5-7 23:26:00
第一个问题:可以用txt导入,一个是数字部分,另一个为字符
后面的问题就用循环和判断就可以了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-5-7 23:37:00

第二个问题我的目的是分类汇总。。。。。要一个通用的,比如把A换为

1   123   223  1
2   321   212  1
3   234   234  0
4  333   444  0
5   555   333  0

要能够同时适用!可以把分类项存为一个矩阵如cataloge=[0 1]

[此贴子已经被作者于2008-5-7 23:42:25编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-5-7 23:47:00

我根据xiaoxiaoyishui的帮助,提供了一些改进的方法。谁帮我再改一改。。。。。谢谢了!


clear,clc
A=[1 2 4 1;
2 3 4 1;
3 5 6 2;
4 7 8 2
5 3 4 2];
C=[1 2];
B=zeros(length(C),size(A,2));
for k=1:length(C)
   for i=find(A(:,size(A,2))==C(k))
   D=A(i,1:size(A,2));
   B(k,1:size(A,2))=sum(D);
   end
B(k,size(A,2))=k;
end
B

[此贴子已经被作者于2008-5-8 3:11:58编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群