【问题标题】:MATLAB avoid matrix wrapping in command windowMATLAB 避免在命令窗口中进行矩阵换行
【发布时间】:2014-11-18 16:09:16
【问题描述】:

在命令行窗口中显示矩阵时,有没有办法防止 MATLAB 将矩阵包装成多个块?这就是我的意思:

>> x = rand(10,1);
>> y = rand(10,1);
>> c = squareform(pdist([x y]))

c =

  Columns 1 through 6

         0    0.9160    0.4707    0.7161    0.6093    0.1555
    0.9160         0    0.8495    0.8984    0.6463    1.0714
    0.4707    0.8495         0    0.2459    0.2477    0.5541
    0.7161    0.8984    0.2459         0    0.2603    0.7970
    0.6093    0.6463    0.2477    0.2603         0    0.7306
    0.1555    1.0714    0.5541    0.7970    0.7306         0
    0.0881    0.9695    0.4311    0.6762    0.6012    0.1295
    0.4698    0.4566    0.4587    0.6057    0.3612    0.6245
    0.2442    1.1079    0.7006    0.9460    0.8534    0.1629
    0.8282    0.1355    0.7200    0.7629    0.5114    0.9832

  Columns 7 through 10

    0.0881    0.4698    0.2442    0.8282
    0.9695    0.4566    1.1079    0.1355
    0.4311    0.4587    0.7006    0.7200
    0.6762    0.6057    0.9460    0.7629
    0.6012    0.3612    0.8534    0.5114
    0.1295    0.6245    0.1629    0.9832
         0    0.5156    0.2700    0.8736
    0.5156         0    0.6857    0.3588
    0.2700    0.6857         0    1.0359
    0.8736    0.3588    1.0359         0

我希望能够复制和粘贴矩阵 c(例如,粘贴到 LaTeX 文档或 MATLAB 脚本中),但这对于当前的输出格式显然很麻烦,尤其是对于较大的矩阵。

【问题讨论】:

  • 我不知道,但您可以使用variable explorer 来查看整个矩阵并与之交互。
  • 或者将矩阵的内容打印到文本文件中。
  • 变量浏览器可能是要走的路。从那里我可以复制和粘贴整个矩阵。文本文件是另一种选择,但我更愿意避免这个额外的步骤。 @excaza 如果你想写你的评论作为答案,我会接受。

标签: matlab matrix


【解决方案1】:

你可以做fprintf([repmat('%f\t', 1, size(c, 2)) '\n'], c');,它给出了这个输出:

0.000000    0.818064    1.054641    0.342287    0.668041    0.717356    0.597756    0.804045    0.650459    0.815819    
0.818064    0.000000    0.778921    0.485276    0.322136    1.157594    0.833495    0.363079    0.185730    0.060130    
1.054641    0.778921    0.000000    0.917058    0.529164    0.815812    0.556431    0.421934    0.846744    0.837905    
0.342287    0.485276    0.917058    0.000000    0.422061    0.885196    0.638057    0.565268    0.309989    0.476907    
0.668041    0.322136    0.529164    0.422061    0.000000    0.848242    0.518164    0.143653    0.325248    0.368679    
0.717356    1.157594    0.815812    0.885196    0.848242    0.000000    0.333280    0.894846    1.078174    1.191962    
0.597756    0.833495    0.556431    0.638057    0.518164    0.333280    0.000000    0.562174    0.773488    0.871944    
0.804045    0.363079    0.421934    0.565268    0.143653    0.894846    0.562174    0.000000    0.428803    0.420291    
0.650459    0.185730    0.846744    0.309989    0.325248    1.078174    0.773488    0.428803    0.000000    0.167448    
0.815819    0.060130    0.837905    0.476907    0.368679    1.191962    0.871944    0.420291    0.167448    0.000000    

但是使用 cmets 中提到的variable explorer 可能更容易。

【讨论】:

  • 我比变量资源管理器更喜欢这个,因为你可以为所有值指定一个恒定的输出格式。
  • 当输出格式需要以某种方式(例如,插入到 LaTeX 文档中)时,这很好。但总的来说,我更喜欢变量资源管理器,因为它更快,而且我不必记住或思考生成此表的语法。
【解决方案2】:

正如我在评论中提到的,我认为没有办法更改命令行输出。如果您不需要编程解决方案,您可以利用variable explorer 使用略带 Excel 风格的界面与您的数据进行交互。

您可以通过在工作区浏览器中双击变量、右键单击变量并选择Open、选择变量并点击ctrl+D(在Windows 上)或以编程方式使用openvar 来访问变量资源管理器.

如果您确实需要编程解决方案,您可以使用众多导出功能之一(sprintffprintfsave 等),@badjr 发布的答案就是其中一个示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    相关资源
    最近更新 更多