找回密码
 欢迎注册
查看: 14588|回复: 5

[讨论] 如何用mathematica实现从几个向量到一个矩阵的转化?

[复制链接]
发表于 2011-2-14 15:17:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
假设只有两个向量
a=[a1,a2,a3]
b=[b1,b2,b3]
形成的矩阵是
M=[
a1,b1
a1,b2
a1,b3
a2,b1
a2,b2
a2,b3
a3,b1
a3,b2
a3,b3
]
我是按照matlab的语法写成的,
如果是三个向量的话,
M的每一行等于=[ai,bj,ck]
其中i循环最慢
i循环第二慢
k循环最快.

我当然知道这个可以使用几重循环就可以搞定,但是
当向量变多的时候,循环就会特别的慢!
不知道谁能搞出高效率的代码.
使用matlab或者mathematica!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 15:41:00 | 显示全部楼层
求两个向量的直积么?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 15:48:24 | 显示全部楼层
求两个向量的直积么?
hujunhua 发表于 2011-2-14 15:41

不知道直积是什么意思
矩阵的列数等于向量的个数,
矩阵的行数等于所有向量的长度的乘积,
你可以把你的代码先写出来看看
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 17:02:11 | 显示全部楼层
  1. a={a, b, c};b={1,2,3};
  2. Tuples[{a, b}] // MatrixForm
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 17:08:44 | 显示全部楼层
不过,直积一般是以张量的方式排列的
  1. a={a, b, c};b={1,2,3};
  2. Outer[List,a, b] // MatrixForm
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 17:38:49 | 显示全部楼层
5# hujunhua
  1. Tuples[{{a, b, c}, {1, 2, 3}}]
复制代码
  1. Flatten[Outer[List, {a, b, c}, {1, 2, 3}], 1]
复制代码
  1. Distribute[{{a, b, c}, {1, 2, 3}}, List]
复制代码

评分

参与人数 1经验 +4 收起 理由
hujunhua + 4 不能再全了,再有的失于繁琐了

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-24 23:52 , Processed in 0.043529 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表