【问题标题】:flatten from mathematica to matlab从mathematica展平到matlab
【发布时间】:2011-02-19 18:02:53
【问题描述】:

我怎样才能把这个命令从mathematica写到matlab?

total = Apply[Plus, Flatten[mlat]]/L2

,其中 L2 是一个值,mlat 是一个矩阵。

【问题讨论】:

    标签: matlab wolfram-mathematica flatten


    【解决方案1】:

    简单写:

     total = sum(mlat(:)) / L2
    

    【讨论】:

    • 它应该给我一个数字作为结果,而不是矩阵。 (mlat=2*round(rand(L,L))-1)
    • Apply[Plus,list]list中元素的总和,所以使用sum
    • 对不起,正如 yaroslav 所说,只是 sum() 我写的,所以 sum(mlat(:)/L2)
    • 感谢您的回答。为了取一个值,我必须做 mlat(:),所以如果我有 "Apply[Plus,mlat]" 我会做 "sum(mlat(:) )“ 正确的?如果我有 "Apply[Plus,Flatten(mlat)]" 我该怎么办?
    • 好的,谢谢,如果我有 Apply[Plus,list] -->> sum(list) 并且如果我有 Apply[Plus,Flatten[list]] --... sum(列表(:))
    【解决方案2】:

    对matlab没有帮助,但是在Mathematica中你可以简单地写

    total = Total[mlat, -1]/L2
    

    代替

    total = Apply[Plus, Flatten[mlat]]/L2
    

    【讨论】:

    • 好的,谢谢。但我认为在我的例子中,如果我理解得很好,Total[mlat,2] 中的“2”一定不存在。
    • @George 我假设mlat 是一个二维数组,而不是更深的张量或简单的向量。在原始版本中,Flatten[mlat] 创建数组 mlat 中所有元素的向量,Apply[Plus, ...] 给出该向量元素的总和。 Total[mlat, 2]mlat 的总和降至第 2 级,即 mlat 中所有元素的总和。因此,对于二维数组mlat,输出应该是相同的。
    • @George 我突然想到更好的替换是Total[mlat, -1]/L2,因为这意味着mlat 的所有级别的总和,即使mlat 是向量或张量,它的工作方式也与Flatten 相同.很抱歉,我从不使用 Matlab,因此无法提供帮助,但我很乐意帮助解释您需要翻译的任何 Mathematica 代码。不知道本站有没有私信功能;我是 StackOverflow 的新成员。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多