作业帮 > 综合 > 作业

matlab 相同元素相加

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/18 04:13:06
matlab 相同元素相加
【毕设求救】矩阵元素相加问题!
毕设求救,往各位大大不吝赐教,谢谢谢谢!
题目要求:
a=[1 1 1 1 1 1 1 1 1 1
3 6 4 1 4 3 5 3 6 3
9 6 2 1 2 4 5 6 8 2];
要求将a中第二行的元素进行比对,比如,若a中第二行第i列元素等于a中第二行第一列元素,则a中第三行第一列元素等于a中第三行第一列元素加上a中第三行第i列元素的和,即若a(2,i)==a(2,1)则a(3,1)=a(3,1)+a(3,i),同时,删除掉i列元素.依次,查找同第二行第二列元素相同的元素,再进行上述操作,知道得到矩阵
a=[1 1 1 1 1
3 6 4 1 5
21 14 4 1 5]
希望知道做法的大大能够尽快给出答案,毕设急用,就接了半天,晕在循环里了,谢谢啦!
谢谢jfroom的答案,这段程序我在冥思苦想之后也有了解决的办法,我把代码也贴出来,咱们可以交流一下哈!
a=[1 1 1 1 1 1 1 1 1 1;3 6 4 1 4 3 5 3 6 3;9 6 2 1 2 4 5 6 8 2];
e=size(a,2);
d=zeros(1,e);
for i=1:e-1
for j=i+1:e
if a(2,j)==a(2,i)
a(3,i)=a(3,i)+a(3,j);
d(j)=j;
end
end
end
a(:,find(d))=[];
最后得到的结果是:
a =
1 1 1 1 1
3 6 4 1 5
21 14 4 1 5
clc
close all
clear all
a=[1 1 1 1 1 1 1 1 1 1;
3 6 4 1 4 3 5 3 6 3;
9 6 2 1 2 4 5 6 8 2];
count=1;
n=length(a);
for i=1:n-1
for j=i+1:n
if a(2,j)==a(2,i)
a(3,i)=a(3,i)+a(3,j);
lie(count)=j;
count=count+1;
end
end
flag=find(lie~=0);
a(:,lie(flag))=[];
count=1;
lie=lie.*0;
n=length(a);
end