Matlab中不同维数矩阵相加问题
就是小矩阵加到大矩阵的对应位置中去;
注意:A与B矩阵的维数并不确定。 展开
这样:
>> A=[1,2,3;4,5,6;7,8,9],B=[1,2;3,4]
A =
1 2 3
4 5 6
7 8 9
B =
1 2
3 4
>> [rA,cA]=size(A);
>> [rB,cB]=size(B);
>> C=zeros(max(rA,rB),max(cA,cB));
>> C(1:rA,1:cA)=A;
>> C(1:rB,1:cB)=C(1:rB,1:cB)+B;
>> C
C =
2 4 3
7 9 6
7 8 9
>> [2,4,3;8,10,6;7,8,9]
ans =
2 4 3
8 10 6
7 8 9
扩展资料:
注意事项
两个大小不同的矩阵是不能相加的,要实现对应位置相加,需要将纬度较小的扩展为纬度较大的矩阵,没有数据的位置填上零,形成两个大小相同的矩阵,然后再相加。
matlab最大的好处就是不用事先定义变量,按列存储数据,只要每一列的数据个数是不变的,就可以直接使用,直接使用的变量默认为矩阵,只要存储了第一列数据,其行数就确定了,但列数是可变的,不会报错,放心使用,但前提是你的行数一旦确定就不能超过第一次使用的行数,否则会报错,需要另行编制程序。
要实现对应位置相加,需要将纬度较小的扩展为纬度较大的矩阵
没有数据的位置填上零,形成两个大小相同的矩阵,然后再相加
A,B的大小并不确定,那么还需要先根据A,B的大小比较来确定如何扩展矩阵
m=max(size(A,1),size(B,1));%确定最大行数
n=max(size(A,2),size(B,2));%确定最大列数
AA=zeros(m,n);
BB=zeros(m,n);
AA(1:size(A,1),1:size(A,2))=A; %扩展A
BB(1:size(B,1),1:size(B,2))=B; %扩展B
C=AA+BB; %求和
2015-08-18
你举例的结果不对吧?
>> A=[1,2,3;4,5,6;7,8,9],B=[1,2;3,4]
A =
1 2 3
4 5 6
7 8 9
B =
1 2
3 4
>> [rA,cA]=size(A);
>> [rB,cB]=size(B);
>> C=zeros(max(rA,rB),max(cA,cB));
>> C(1:rA,1:cA)=A;
>> C(1:rB,1:cB)=C(1:rB,1:cB)+B;
>> C
C =
2 4 3
7 9 6
7 8 9
>> [2,4,3;8,10,6;7,8,9]
ans =
2 4 3
8 10 6
7 8 9