找回密码
 注册
Simdroid-非首页
查看: 232|回复: 9

[基础概念] 帮助文件中的2个Flatten小例子。代码就两行却就看不懂。

[复制链接]
发表于 2009-10-28 09:20:22 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
悬赏10仿真币已解决
本帖最后由 TBE_Legend 于 2009-10-28 19:51 编辑

这是帮助文件中的1个Flatten小例子。看不懂,大家帮忙看看,多谢~!

  1. u={{a,b},{c, d}}
  2. Flatten[{{u,0 u},{0 u,u}},{{1,3},{2,4}}]//MatrixForm
  3. Flatten[{{u,0 u},{0 u,u}}, {{1,4}, {2,3}}]//MatrixForm
复制代码
附件是文档的说明。
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

当然了,你也可以用原来的u = {{a, b}, {c, d}}试一下。
发表于 2009-10-28 09:20:23 | 显示全部楼层 来自 美国
Simdroid开发平台
本帖最后由 smarten 于 2009-10-30 13:47 编辑
  1. u = {{a, b, f}, {c, d, e}}
  2. t = {{u, 0 u}, {0 u, u}}
  3. dim = Dimensions[t]
  4. l13 = Table[{i, j}, {i, dim[[1]]}, {j, dim[[3]]}] //
  5.    Flatten[#, {1, 2}] &;
  6. Flatten[t, {{1, 3}, {2, 4}}] // MatrixForm
  7. Map[Flatten[#, {1, 2}(*Flatten based on 2,4*)] &,
  8.   Map[t[[#[[1]], All, #[[2]], All]] &, l13](*Flatten based on {1,
  9.   3}*)] // MatrixForm
  10. l41 = Table[{i, j}, {j, dim[[4]]}, {i, dim[[1]]}] //
  11.   Flatten[#, {1, 2}] &
  12. Flatten[t, {{4, 1}, {3, 2}}] // MatrixForm
  13. Map[Flatten[#, {2, 1}(*Flatten based on {3,2}*)] &,
  14.   Map[t[[#[[1]], All, All, #[[2]]]] &, l41](*Flatten based on {4,
  15.   1}*)] // MatrixForm
  16. Flatten[t, {{4, 2, 1}, {3}}] // MatrixForm
  17. l421 = Table[{i, j, k}, {k, dim[[4]]}, {j, dim[[2]]}, {i, dim[[1]]}] //
  18.     Flatten[#, {1, 2, 3}] &;
  19. Map[Flatten[#, {1}(*Flatten based on {3}*)] &,
  20.   Map[t[[#[[1]], #[[2]], All, #[[3]]]] &, l421](*Flatten based on {4,
  21.   2,1}*)] // MatrixForm
  22. Flatten[t, {{4, 2, 1, 3}}] // MatrixForm
  23. l4213 = Table[{i, j, k, l}, {l, dim[[4]]}, {j, dim[[2]]}, {i,
  24.     dim[[1]]}, {k, dim[[3]]}] // Flatten[#, {1, 2, 3, 4}] &
  25. Map[t[[#[[1]], #[[2]], #[[3]], #[[4]]]] &,
  26.   l4213](*Flatten based on {4,2,1,3}*)// MatrixForm
复制代码
当然了,你也可以用原来的u = {{a, b}, {c, d}}试一下。
回复

使用道具 举报

发表于 2009-10-28 15:12:21 | 显示全部楼层 来自 江苏南京
具体不太清楚,效果是做一个二维矩阵转置:
If the Subscript[m, ij] are matrices, Flatten[{{Subscript[m, 11],Subscript[m, 12]},{Subscript[m, 21],Subscript[m, 22]}},{{1,3},{2,4}}] effectively constructs a single matrix from the \[OpenCurlyDoubleQuote]blocks\[CloseCurlyDoubleQuote] Subscript[m, ij].
又如:
list = Table[i + j - 1, {i, 4}, {j, i}]
Flatten[list, {{1}, {2}}]
Flatten[list, {{2}, {1}}]
第二行代码对表作了一个转置
回复

使用道具 举报

 楼主| 发表于 2009-10-28 15:13:20 | 显示全部楼层 来自 黑龙江哈尔滨
具体不太清楚,效果是做一个二维矩阵转置:
If the Subscript[m, ij] are matrices, Flatten[{{Subscript[m, 11],Subscript[m, 12]},{Subscript[m, 21],Subscript[m, 22]}},{{1,3},{2,4}}] effectively constructs  ...
chji168168 发表于 2009-10-28 15:12


就是想搞清楚里面究竟发生了什么啊
回复

使用道具 举报

发表于 2009-10-28 15:50:25 | 显示全部楼层 来自 黑龙江大庆
mm中最难理解和掌握的命令之一了,看很长时间也无法理解到其中的精髓!只知道{{},{}...}中有几个括号,最终结果就有几层。。。。
回复

使用道具 举报

发表于 2009-10-28 15:51:07 | 显示全部楼层 来自 黑龙江大庆
估计得对mm非常了解的人才能理解其中的精髓啊
回复

使用道具 举报

 楼主| 发表于 2009-10-28 16:40:37 | 显示全部楼层 来自 黑龙江哈尔滨
mm中最难理解和掌握的命令之一了,看很长时间也无法理解到其中的精髓!只知道{{},{}...}中有几个括号,最终结果就有几层。。。。
ckvictor 发表于 2009-10-28 15:50



无法想象mmtc的人源于什么原因想出这么复杂的变换(如附件图片中所示)?
回复

使用道具 举报

发表于 2009-10-28 19:39:39 | 显示全部楼层 来自 北京
  1. x = Table[{a[长[i], 宽[j], 高[k]]}, {i, 1, 2}, {j, 1, 2}, {k, 1, 2}];
  2. x // MatrixForm
  3. y = {};
  4. For[i = 23, i <= 278, i++,
  5. t = Delete[IntegerDigits[256 + i, 4], 1] + 1;
  6. If[Intersection[t, {1, 2, 3, 4}] == Union[t, {1, 2, 3, 4}],
  7. AppendTo[y, Partition[t, 2]]]]
  8. For[i = 1, i <= Length[y], i++,
  9. Print[y[[i]] // MatrixForm];
  10. Print[Flatten[x, y[[i]]] // MatrixForm];
  11. ]
复制代码


我觉得你从上面的程序中寻找结果可能更容易一些,
我觉得就像是把一个2×2×2的正方体拆开放成2×4的长方形一样,
也可以理解成将三阶矩阵Partition成了二阶矩阵.
打开的方式不同,结果不同,
你观察我生成的24个矩阵然后寻找规律吧.

评分

1

查看全部评分

回复

使用道具 举报

发表于 2009-10-28 19:57:09 | 显示全部楼层 来自 黑龙江大庆
Partitioning and Padding Lists and Handling arbitrary nested lists is the most complex in mathematic!

could anyone elaborate them????? thanks!!!!!
回复

使用道具 举报

 楼主| 发表于 2009-10-28 21:50:36 | 显示全部楼层 来自 黑龙江哈尔滨
觉得你从上面的程序中寻找结果可能更容易一些,
觉得就像是把一个2×2×2的正方体拆开放成2×4的长方形一样,
也可以理解成
ggggwhw 发表于 2009-10-28 19:39


非常感谢~!

我菜鸟一个,你的程序我看得更晕。

1) 你确实搞明白了,你的程序确实能解释我的问题。我愿意花时间仔细看看你的程序;
2) 你也只是猜测,感觉规律能找出来。那么我还是自己折腾吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 17:34 , Processed in 0.058638 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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