注册 登录
编程论坛 Matlab

[求助]如何从一个矩阵中取若干数组成新的几矩阵

wlyddd 发布于 2006-12-22 16:33, 2357 次点击
各位大侠:请教一个矩阵问题,如矩阵A=[3 2 1 6 5 4; 9 8 7 1 2 3],取每行的三个数重新构
成新的矩阵,则生成四个新矩阵:B1=[3 2 1],B2=[6 5 4],B3=[9 8 7],B4=[1 2 3]。如每行
取四个数则生成二个新矩阵:B1=[3 2 1 6],B2=[9 8 7 1],此时每行多余的后两位数舍去不要。
用matlab编程该如何执行呀?请各位高手不吝赐教!
6 回复
#2
hitzhang2006-12-22 22:49

a=rand(4,4);
ab=a(1:2,3:4)%取1~2行3~4列付与ab

#3
wlyddd2006-12-23 12:47
再请教

A=[3 2 1 6 5 4; 9 8 7 1 2 3];

运行
a=rand(4,4);
ab=a(1:2,3:4)%取1~2行3~4列付与ab
结果:
ab =

0.8214 0.9218
0.4447 0.7382
不是得到分开的矩阵,如ab1和ab2,再请指教,谢谢,初学者。
另请教:矩阵的下标变量如何循环?谢谢!

#4
zhangenter2006-12-23 22:45
d = 3;
A=[3 2 1 6 5 4; 9 8 7 1 2 3] ;
[M,N] = size(A) ;
n = floor( N / d ) ;
for num1 = 1: M
for num2 = 1: n
B{num1, num2} = A(num1, num2:(num2+d-1)) ;
end
end
#5
wlyddd2006-12-24 11:09

谢谢4楼的指点,程序运行结果如下:
B =

[1x3 double] [1x3 double] [1x4 double] [1x4 double]
[1x3 double] [1x3 double] [] []


B =

[1x3 double] [1x3 double] [1x4 double] [1x4 double]
[1x3 double] [1x3 double] [] []


B =

[1x3 double] [1x3 double] [1x4 double] [1x4 double]
[1x3 double] [1x3 double] [] []


B =

[1x3 double] [1x3 double] [1x4 double] [1x4 double]
[1x3 double] [1x3 double] [] []
还是没有分开成几个新的矩阵.Workspace显示B为2×4 cell.到底生成几个或若干新矩阵该如何作?还请不吝多多赐教!

#6
zhangenter2006-12-24 16:57

已经分开了,B为2×4 cell,要提B的第m行,第n列矩阵用B{m,n}

#7
wlyddd2006-12-24 17:36
谢谢您,可能还是要写若干B1......Bn才行。
1