【问题标题】:Beautifying the output of Matlab aka human-readable form for output?美化 Matlab 的输出,也就是人类可读的输出形式?
【发布时间】:2013-03-28 15:14:49
【问题描述】:
syms x y z;
solve(x==y+1, y^2==z,z==9) 

ans = 

x: [2x1 sym] 
y: [2x1 sym] 
z: [2x1 sym]

现在我想看到像 Mathematica 为 Solve[{x == y + 1, y^2 == z, z == 9}, {x, y, z}] 输出 {{x->-2,y->-3,z->9},{x->4,y->3,z->9}} 这样的结果。工作区窗口和变量编辑器显示this,但我仍然看不到存储在那里的实际值。

我怎样才能看到 Matlab 的输出以人类可读的形式,也就是美化的形式?

【问题讨论】:

    标签: matlab math output symbolic-math


    【解决方案1】:

    solve 的文档指出:

    求解方程组时,使用一个输出参数以结构体数组的形式返回解

    结果作为结构返回,因此您可以访问每个字段以查看其值。该文档提供了一个如何做到这一点的示例:

    S = solve(x==y+1, y^2==z, z==9);
    [S.x, S.y, S.z]
    

    这应该会导致:

    ans =
         4     3     9
        -2    -3     9
    

    或者,您可以通过指定多个输出参数以单独的变量返回解决方案:

    [solx, soly, solz] = solve(x==y+1, y^2==z, z==9)
    

    这将导致:

    solx =
         4
        -2
    
    soly =
         3
        -3
    
    solz =
         9
        -9
    

    【讨论】:

    • 谢谢,不知何故跳过了手册中的部分——幸运的是,现在得到了比手册更深入的答案:)
    【解决方案2】:

    在 MATLAB 中查看结构类型的内容并不简单。一种快速的方法是执行以下操作:

    r=struct2cell(solve(x==y+1, y^2==z,z==9));
    r{:}
    
    ans =
    
      4
     -2
    
    
    ans =
    
      3
     -3
    
    
    ans =
    
     9
     9
    

    如果您想识别实际的变量名称,我认为您需要编写一个自定义例程来打印您希望它们出现的方式。

    【讨论】:

    • 很有趣,手册中没有提到的一种方法——也许将来会很有用,但另一种方法看起来更容易使用 +1 很好的尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    相关资源
    最近更新 更多