matlab - 在字面上写的矩阵中,用省略号或不用椭圆结束行之间有什么区别?
问题描述
基础知识
在 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如何读取它们而言,两种编写矩阵(B
及C
以上)的方式是否完全相同?如果存在差异,是否应该优先于另一个,为什么?
编辑:在 MATLAB 中有很多方法可以在一行或多行中编写矩阵,它们都产生相同的输出。但是有没有一种 MATLAB 最能理解的方法(即正确理解输入的最小努力)?还是程序方面的努力总是一样的?
我问的原因:我刚刚发现自己在一个脚本中使用了这两种方法,一次是为了简单地打破一长串数字,一次是为了更好地查看数据。
解决方案
写作:
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 ;
)是不必要的,而且可能令人困惑。其他选项主要基于意见。
推荐阅读
- amazon-sagemaker - 使用 boto3 调用 sagemaker 端点。抛出错误
- java - java中的自动日期格式识别
- kotlin - 重载分辨率歧义。所有这些函数都匹配 kotlin 中的错误
- java - 出现错误 - 由于在运行 Spring Boot 应用程序时缺少 ServletWebServerFactory bean,无法启动 ServletWebServerApplicationContext
- amazon-s3 - 302 重定向以管理与 bitbucket 相同的 S3 预签名 URL
- python - CSV 中的行总和
- django - 在 Django FormView 中获取当前用户
- azure-devops - Terraform 在配置之前拆分输入
- haskell - 异常类型中的隐式调用堆栈
- python - 有没有办法使用 FastAPI 中的装饰器检查请求标头?