24小时热门版块排行榜    

查看: 1460  |  回复: 4

fluenter

银虫 (正式写手)

[求助] 两个向量合并成二维数组

a=1:2
b=3:4
k=length(a)
l=length(b)
i=1;
while i     j=1
x=zeros(l,1);
x=a(i)
c(j)=[x',b']
j=j+1;
end


我想得到c    1 3
                   1  4
                    2 3
                     2 4
回复此楼
每天坚持一件事情
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
fluenter: 金币+10, ★★★★★最佳答案 2013-03-17 18:11:13
笨一点的方法就是用双循环,
CODE:
a = 1 : 2;
b = 3 : 4;
length_a = length( a );
length_b = length( b );

c = zeros( length_a * length_b, 2 );
k = 1;
for i = 1 : length_a
    for j = 1 : length_b        
        c( k, : ) = [ a( i ), b( j ) ];
        k = k + 1;
    end
end

» 本帖已获得的红花(最新10朵)

明德厚学、求是创新
2楼2013-03-16 12:56:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fluenter

银虫 (正式写手)

送鲜花一朵
引用回帖:
2楼: Originally posted by xiegangmai at 2013-03-16 12:56:40
笨一点的方法就是用双循环,

a = 1 : 2;
b = 3 : 4;
length_a = length( a );
length_b = length( b );

c = zeros( length_a * length_b, 2 );
k = 1;
for i = 1 : length_a
    for j = 1 : length_b  ...

谢谢您的回复。还有简单的方法吗?
每天坚持一件事情
3楼2013-03-17 18:11:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主

引用回帖:
3楼: Originally posted by fluenter at 2013-03-17 18:11:42
谢谢您的回复。还有简单的方法吗?...

灵活应用repmat、reshape等函数,不用循环也可以的。
CODE:
a = 1 : 2;
b = 3 : 4;
length_a = length( a );
length_b = length( b );
c = [ reshape(repmat( a, length_b, 1 ),length_a * length_b, 1),reshape(repmat( b, length_a, 1 )',length_a * length_b, 1)];

对较小的数组合并,效率不如循环。
对大型数组合并,这样的效率就高许多了
明德厚学、求是创新
4楼2013-03-17 20:29:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fluenter

银虫 (正式写手)

引用回帖:
4楼: Originally posted by xiegangmai at 2013-03-17 20:29:04
灵活应用repmat、reshape等函数,不用循环也可以的。

a = 1 : 2;
b = 3 : 4;
length_a = length( a );
length_b = length( b );
c = ;


对较小的数组合并,效率不如循环。
对大型数组合并,这样的 ...

太感谢了,自己琢磨半天也是错的。
每天坚持一件事情
5楼2013-03-18 12:50:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 fluenter 的主题更新
信息提示
请填处理意见