matlab中怎样将三维数组的一个维赋给二维 如A(:,:,1)赋给一个二维的B

还有怎样将一个矩阵的每个元素都除以每列之和(是想问,是跟c语言中用两个for语句循环?应该有简单的方法吧,,那个求每列之和不是能用sum(第几列)这样么)

1 三维数组中的各个为也是二维数组,所以赋值可以直接赋即可!
假设A是三维数组,B是二维数组
B=A(:,:,1),B=A(:,:,2),B=A(:,:,3)分别把A的三维中的一、二、三维赋给B。
2 matlab操作比较简单,用一个循环即可,控制其列
>> a=rand(5,5)
a =
0.9501 0.7621 0.6154 0.4057 0.0579
0.2311 0.4565 0.7919 0.9355 0.3529
0.6068 0.0185 0.9218 0.9169 0.8132
0.4860 0.8214 0.7382 0.4103 0.0099
0.8913 0.4447 0.1763 0.8936 0.1389
>> M=sum(a)
M =
3.1654 2.5032 3.2437 3.5620 1.3727%%sum得到的结果就是每列之和
>> for i=1:5
a(:,i)=a(:,i)/M(i);%%然后给每列除以其之和,a(:,1)表示第一列,a(:,2)表示第二列,以此类推
end
>> a
a =
0.3002 0.3045 0.1897 0.1139 0.0422
0.0730 0.1824 0.2441 0.2626 0.2571
0.1917 0.0074 0.2842 0.2574 0.5924
0.1535 0.3281 0.2276 0.1152 0.0072
0.2816 0.1777 0.0543 0.2509 0.1012
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-02-23
1, 直接赋值 b= A(:,:,1) ,试了一下可以。
2. 先用次sum求每行元素和,因为要求 “每个元素都除以每列之和”,所以得用1次for循环追问

我要把矩阵的一列比如说A(:,i)赋给B中的第i列(A,B维数相同)该怎样,是用B(:,i)=A(:,i)么?

追答

用B(:,i)=A(:,i)

本回答被提问者采纳
第2个回答  2012-09-04
B(:)=A(:,:,:);这样一个语句就搞定啦!
第3个回答  2011-05-27
B = A(:,:,1)
第4个回答  2011-05-27
300块钱 帮你做