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)........) 展开
 我来答
兔子和小强
2015-02-03 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1428万
展开全部

之前看错题目。

D = rand(100);
A = D(1:2:end, :);
B = D(2:2:end, :);

C = zeros(50, 200);
C(:, 1:2:end) = A;
C(:, 2:2:end) = B;

 当然, 如果你只在生成C的时候用到A,B,后面并不再需要A,B的话,可以如下一步来生成C:

C = reshape([D(1:2:end, :); D(2:2:end, :)], 50, []);
百度网友1c6e06f
推荐于2018-05-09 · TA获得超过2894个赞
知道小有建树答主
回答量:695
采纳率:66%
帮助的人:658万
展开全部
是不是这个意思:
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

但真的不推荐这样搞,你懂这个循环的过程就可以了,实际应用中还是按上面简单的办法来,性能还会好许多。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式