找回密码
 欢迎注册
查看: 20743|回复: 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-11-22 16:54 , Processed in 0.024772 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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