【发布时间】:2014-05-24 17:00:53
【问题描述】:
我在 Maple 中有一个符号矩阵(18×18),我想导出到 Matlab。
我使用with(CodeGeneration) 然后Matlab(...) 将其转换为Matlab 语法,但它没有响应,因为矩阵太大。有没有其他方法可以做到这一点并将其保存到文本文件中。
P.S.:H 是这样的:
H = [0.750e1 0 0 -0.170400e1 * cos(q04) * cos(q05) * cos(q06) + 0.335e-1 * sin(q06) * cos(q05) * cos(q04) * cos(q11) + 0.335e-1 * sin(q11) * cos(q04) * cos(q05) * cos(q06) - 0.168e-1 * sin(q25) * sin(q24) * cos(q21) * sin(q04) * sin(q06) - 0.168e-1 * cos(q04) * sin(q05) * cos(q25) * cos(q23) * cos(q22) + 0.168e-1 * cos(q04) * sin(q05) * cos(q25) * sin(q23) * sin(q22) + 0.170400e1 * sin(q04) * sin(q06) + 0.176150e1 * cos(q06) * cos(q22) * sin(q04) * cos(q21) + 0.735e-1 * cos(q06) * sin(q22) * sin(q04) * cos(q21) + 0.176150e1 * sin(q21) * cos(q22) * sin(q04) * sin(q06) + 0.735e-1 * sin(q21) * sin(q22) * sin(q04) * sin(q06) + 0.176150e1 * sin(q06) * cos(q05) * cos(q22) * cos(q04) * cos(q21) + 0.735e-1 * sin(q06) * cos(q05) * sin(q22) * cos(q04) * cos(q21) - 0.176150e1 * sin(q21) * cos(q22) * cos(q04) * cos(q05) * cos(q06) - 0.735e-1 * sin(q21) * sin(q22) * cos(q04) * cos(q05) * cos(q06) - 0.168e-1 * sin(q25) * cos(q24) * cos(q23) * cos(q22) * sin(q21) * cos(q04) * cos(q05) * cos(q06) + 0.168e-1 * sin(q25) * cos(q24) * sin(q23) * sin(q22) * sin(q21) * cos(q04) * cos(q05) * cos(q06) + 0.168e-1 * cos(q11) * sin(q15) * sin(q14) * sin(q04) * sin(q06) + 0.168e-1 * cos(q04) * sin(q05) * cos(q13) * cos(q12) * cos(q15) - 0.168e-1 * cos(q04) * sin(q05) * sin(q13) * sin(q12) * cos(q15) + 0.168e-1 * cos(q06) * sin(q25) * sin(q24) * sin(q04) * sin(q21) + 0.168e-1 * cos(q06) * sin(q15) * sin(q04) * sin(q11) * sin(q14) + 0.168e-1 * cos(q13) * sin(q12) * sin(q11) * cos(q15) * sin(q04) * sin(q06) + 0.168e-1 * sin(q13) * cos(q12) * sin(q11) * cos(q15) * sin(q04) * sin(q06) - 0.168e-1 * cos(q11) * sin(q15) * sin(q14) * cos(q04) * cos(q05) * cos(q06) - 0.168e-1 * cos(q04) * sin(q05) * cos(q13) * sin(q12) * sin(q15) * cos(q14) - 0.168e-1 * cos(q04) * sin(q05) * sin(q13) * cos(q12) * sin(q15) * cos(q14) - 0.168e-1 * cos(q06) * cos(q15) * sin(q04) * cos(q11) * sin(q12) * cos(q13) - 0.168e-1 * cos(q06) * cos(q15) * sin(q04) * cos(q11) * cos(q12) * sin(q13) + 0.168e-1 * sin(q06) * cos(q05) * sin(q15) * cos(q04) * sin(q11) * sin(q14) - 0.11040e0 * sin(q06) * cos(q05) * cos(q04) * cos(q11) * cos(q12) * sin(q13) - 0.11040e0 * sin(q06) * cos(q05) * cos(q04) * cos(q11) * sin(q12) * cos(q13) - 0.9320e-1 * cos(q06) * sin(q04) * cos(q11) * cos(q12) * sin(q14) * cos(q13) + 0.9320e-1 * cos(q06) * sin(q04) * cos(q11) * sin(q12) * sin(q14) * sin(q13) - 0.11040e0 * sin(q11) * cos(q12) * sin(q13) * cos(q04) * cos(q05) * cos(q06) - 0.11040e0 * sin(q11) * sin(q12) * cos(q13) * cos(q04) * cos(q05) * cos(q06) + 0.9320e-1 * cos(q13) * cos(q12) * sin(q11) * sin(q14) * sin(q04) * sin(q06) - 0.9320e-1 * sin(q13) * sin(q12) * sin(q11) * sin(q14) * sin(q04) * sin(q06) + 0.176150e1 * cos(q04) * sin(q05) * sin(q12) - 0.735e-1 * cos(q04) * sin(q05) * cos(q12) + 0.335e-1 * cos(q06) * sin(q04) * cos(q11) - 0.335e-1 * sin(q11) * sin(q04) * sin(q06) + 0.176150e1 * cos(q06) * sin(q04) * cos(q11) * cos(q12) + 0.735e-1 * cos(q06) * sin(q04) * cos(q11) * sin(q12) - 0.176150e1 * sin(q11) * cos(q12) * sin(q04) * sin(q06) - 0.735e-1 * sin(q11) * sin(q12) * sin(q04) * sin(q06) - 0.168e-1 * sin(q06) * cos(q05) * sin(q15) * cos(q04) * cos(q11) * cos(q12) * cos(q14) * cos(q13) + 0.168e-1 * sin(q06) * cos(q05) * sin(q15) * cos(q04) * cos(q11) * sin(q12) * cos(q14) * sin(q13) - 0.168e-1 * cos(q13) * cos(q12) * sin(q11) * sin(q15) * cos(q14) * cos(q04) * cos(q05) * cos(q06) + 0.168e-1 * sin(q13) * sin(q12) * sin(q11) * sin(q15) * cos(q14) * cos(q04) * cos(q05) * cos(q06) - 0.3500e0 * cos(q04) * sin(q05) * sin(q12) * cos(q13) - 0.3500e0 * cos(q04) * sin(q05) * cos(q12) * sin(q13) - 0.9320e-1 * cos(q06) * sin(q04) * sin(q11) * cos(q14) - 0.9320e-1 * cos(q11) * cos(q14) * sin(q04) * sin(q06) - 0.11040e0 * cos(q04) * sin(q05) * sin(q12) * sin(q13) + 0.11040e0 * cos(q04) * sin(q05) * cos(q12) * cos(q13) + 0.168e-1 * sin(q06) * cos(q05) * sin(q25) * cos(q24) * cos(q22) * cos(q23) * cos(q04) * cos(q21) - 0.168e-1 * sin(q06) * cos(q05) * sin(q25) * cos(q24) * sin(q22) * sin(q23) * cos(q04) * cos(q21) - 0.3500e0 * sin(q06) * cos(q05) * cos(q04) * cos(q11) * cos(q12) * cos(q13) + 0.3500e0 * sin(q06) * cos(q05) * cos(q04) * cos(q11) * sin(q12) * sin(q13) - 0.3500e0 * sin(q11) * cos(q12) * cos(q13) * cos(q04) * cos(q05) * cos(q06) + 0.3500e0 * sin(q11) * sin(q12) * sin(q13) * cos(q04) * cos(q05) * cos(q06) + 0.168e-1 * cos(q06) * sin(q25) * cos(q24) * cos(q22) * cos(q23) * sin(q04) * cos(q21) - 0.168e-1 * cos(q06) * sin(q25) * cos(q24) * sin(q22) * sin(q23) * sin(q04) * cos(q21) + 0.168e-1 * sin(q06) * cos(q05) * cos(q25) * sin(q22) * cos(q23) * cos(q04) * cos(q21) + 0.168e-1 * sin(q06) * cos(q05) * cos(q25) * cos(q22) * sin(q23) * cos(q04) * cos(q21) + 0.168e-1 * sin(q25) * cos(q24) * cos(q23) * cos(q22) * sin(q21) * sin(q04) * sin(q06) - 0.168e-1 * sin(q25) * cos(q24) * sin(q23) * sin(q22) * sin(q21) * sin(q04) * sin(q06) - 0.168e-1 * cos(q25) * cos(q23) * sin(q22) * sin(q21) * cos(q04) * cos(q05) * cos(q06) - 0.168e-1 * cos(q25) * sin(q23) * cos(q22) * sin(q21) * cos(q04) * cos(q05) * cos(q06) - 0.43660e0 * cos(q04) * sin(q05) * sin(q22) * sin(q23) + 0.43660e0 * cos(q04) * sin(q05) * cos(q22) * cos(q23) + 0.176150e1 * cos(q04) ...]
但是要长很多
【问题讨论】:
-
你能导出更小的矩阵吗?这有点小技巧,但是将矩阵分解成行或列怎么样?
ExportMatrix会起作用还是仅适用于数字数据?除非您的矩阵元素依赖于自定义或专用函数,否则代码生成似乎有点过头了。您真的只需要一种将矩阵转换为 Matlab 可以处理的文本格式的方法。 -
@horchler:
ExportMatrix仅适用于数字数据。 “专业功能”是什么意思? -
如果您可以更具体地了解矩阵的内容,甚至提供演示代码,它可能会帮助人们帮助您。它是否包含您编写的自定义函数或可能特定于 Maple 的专用函数?如果它是多项式、三角函数、指数和任何数学环境都有的其他东西,那么您可以考虑将它们直接导出为文本并自己(或在 Matlab 中)对 Matlab 进行任何额外的翻译。我没有 Maple,所以在这方面我无法帮助你。这个网站上的 Maple 用户似乎并不多。
-
@horchler 谢谢。我编辑了我的帖子并添加了 H 的示例(H 是有腿机器人动态模型的一部分)。
标签: matlab save symbolic-math maple code-conversion