matlab中一个矩阵为rand(100),想让他的奇数行和偶数行分别成为两个新矩阵,A,B
最后A,B组合成一个新矩阵C(50,200),要求C的列是(A(:,1)B(:,1)A(:,2)B(:,2)........)...
最后A,B组合成一个新矩阵C(50,200),要求C的列是(A(:,1)B(:,1)A(:,2)B(:,2)........)
展开
2个回答
展开全部
是不是这个意思:
x = rand( 4 );
a = x( 1 : 2 : end, : );
b = x( 2 : 2 : end, : );
[ m n ] = size( a );
c = ones( m, n * 2 );
c( :, 1 : 2 : end ) = a;
c( :, 2 : 2 : end ) = b;
结果:
>> x
x =
0.7413 0.4852 0.0513 0.9430
0.1048 0.8905 0.0729 0.6837
0.1279 0.7990 0.0885 0.1321
0.5495 0.7343 0.7984 0.7227
>> a
a =
0.7413 0.4852 0.0513 0.9430
0.1279 0.7990 0.0885 0.1321
>> b
b =
0.1048 0.8905 0.0729 0.6837
0.5495 0.7343 0.7984 0.7227
>> c
c =
0.7413 0.1048 0.4852 0.8905 0.0513 0.0729 0.9430 0.6837
0.1279 0.5495 0.7990 0.7343 0.0885 0.7984 0.1321 0.7227
x = rand( 4 );
a = x( 1 : 2 : end, : );
b = x( 2 : 2 : end, : );
[ m n ] = size( a );
c = ones( m, n * 2 );
c( :, 1 : 2 : end ) = a;
c( :, 2 : 2 : end ) = b;
结果:
>> x
x =
0.7413 0.4852 0.0513 0.9430
0.1048 0.8905 0.0729 0.6837
0.1279 0.7990 0.0885 0.1321
0.5495 0.7343 0.7984 0.7227
>> a
a =
0.7413 0.4852 0.0513 0.9430
0.1279 0.7990 0.0885 0.1321
>> b
b =
0.1048 0.8905 0.0729 0.6837
0.5495 0.7343 0.7984 0.7227
>> c
c =
0.7413 0.1048 0.4852 0.8905 0.0513 0.0729 0.9430 0.6837
0.1279 0.5495 0.7990 0.7343 0.0885 0.7984 0.1321 0.7227
追问
这个能用循环语句做吗?
追答
循环当然可以,但是矩阵拼接在matlab里就是这样的,用循环反而显得很愚笨,你非要循环的话就这样:
获取a:
[ mx nx ] = size( x );
a = ones( mx / 2, nx );
for i = 1 : mx / 2
a( i, : ) = x( 2 * i - 1, : );
end
把ab填到c里:
[ m n ] = size( a );
for i = 1 : n
c( :, 2 * i - 1 ) = a( :, i );
end
for i = 1 : n
c( :, 2 * i ) = b( :, i );
end
但真的不推荐这样搞,你懂这个循环的过程就可以了,实际应用中还是按上面简单的办法来,性能还会好许多。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询