注册 登录
编程论坛 Matlab

菜鸟求助:一个简单的矩阵组合问题。急!

Sky_cn 发布于 2006-11-26 15:57, 1698 次点击

呜呜,老板要我们弄个单层石墨的坐标算法。在编的过程中碰到了一个问题。有矩阵a和b,需要将a的每一列与b的每一列两两组合然后生成一个新的矩阵c。
例如:
a =

1 3
2 4

b =

5 7
6 8

c =

1 5
2 6
1 7
2 8
3 5
4 6
3 7
4 8
拜托各位大虾啦。

6 回复
#2
Sky_cn2006-11-26 15:58
怎么实现这个列与列之间的组合呢?
怎么实现这个列与列之间的组合呢?
#3
尘埃1222006-11-27 14:01

还没找到很灵活的方法,也许只能用循环

[此贴子已经被作者于2006-11-27 14:04:08编辑过]

#4
hitzhang2006-12-08 16:56
大概是这样


>> a=[1 2;3 4] a = 1 2 3 4 >> b=[5 6;7 8] b = 5 6 7 8 >> cd=combvec(a,b) cd = 1 2 1 2 3 4 3 4 5 5 6 6 7 7 8 8
#5
Sky_cn2006-12-08 22:10

呵呵,多谢楼上了。我已经想办法解决了。先把a中的元素排成一列
>> a=[1;2;3;4]

a =

1
2
3
4

>> b=[5 7;6 8]

b =

5 7
6 8
在新的矩阵c中,让c的第一列不断重复a中的元素,c的第二列只要for 1:numel(b)就可以了。

#6
Sky_cn2006-12-08 22:12
c的第二列 for 1:numel(b)重复b中的元素
#7
zhangenter2006-12-08 23:27
m = size( a, 2 ) ;
n = size( b, 2 ) ;
A = repmat( a, n, 1 ) ;
B = repmat( b, 1, m ) ;
c = [A(:), B(:)]
1