首页 > 解决方案 > 在字面上写的矩阵中,用省略号或不用椭圆结束行之间有什么区别?

问题描述

基础知识

在 MATLAB 中编写矩阵的常规方法是单行,例如:

A = [3,2,1;2,1,3;1,3,2];

用 3 个点将命令分成几行,例如:

x = tan(...
    y);      % ie: x = tan(y);

问题

现在,结合这两个规则来写一个矩阵(为了清楚看到它的结构)会导致:

B = [3, 2, 1;...
     2, 1, 3;...
     1, 3, 2];

然而,MATLAB(在脚本和函数中)也接受这种形式:

C = [3, 2, 1;
     2, 1, 3;
     1, 3, 2];

问题

就MATLAB如何读取它们而言,两种编写矩阵(BC以上)的方式是否完全相同?如果存在差异,是否应该优先于另一个,为什么?

编辑:在 MATLAB 中有很多方法可以在一行或多行中编写矩阵,它们都产生相同的输出。但是有没有一种 MATLAB 最能理解的方法(即正确理解输入的最小努力)?还是程序方面的努力总是一样的?


我问的原因:我刚刚发现自己在一个脚本中使用了这两种方法,一次是为了简单地打破一长串数字,一次是为了更好地查看数据。

标签: matlabmatrixline-breaks

解决方案


写作:

A = [3, 2, 1; 2, 1, 3; 1, 3, 2];

或者:

B = [3, 2, 1;...
     2, 1, 3;...
     1, 3, 2];

或者:

C = [3, 2, 1;
     2, 1, 3;
     1, 3, 2];

或者更短的方式

D = [3, 2, 1
     2, 1, 3
     1, 3, 2];

都是完全相同的。;或换行符都用于分隔矩阵行。

简单测试:

>> isequal(A,B)
ans =
  logical
   1

>> isequal(A,C)
ans =
  logical
   1

>> isequal(A,D)
ans =
  logical
   1

那么,哪个最好?

使用...and 换行符(and ;)是完全没有必要的,它使用换行符而不是...无缘无故地覆盖它们。它实际上就像写:

B = [3, 2, 1; 2, 1, 3; 1, 3, 2];

也不需要使用;和换行符,尽管;如果您将来希望将它们设为一行,添加它可能会有所帮助。它也可能看起来更清晰(基于意见?)

不使用换行符是很常见的,虽然看起来不那么好,但它更紧​​凑。

总结一下:使用...and 换行符(and ;)是不必要的,而且可能令人困惑。其他选项主要基于意见。


推荐阅读