对不起,如果以前曾问过这个问题,我是该站点的新手,并尝试查找类似的问题,但在该站点或MATLAB文档中找不到任何内容。
所以我有以下MWE:
a = ones(5,3);
b = ones(5,1);
a == b
a ./ b
如果我使用Matlab R2018a在笔记本电脑上运行此程序,则操作将获得以下结果:
ans =
5×3 logical array
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
ans =
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
因此,基本上它将第二个数组解释为一个列向量,并将第一个矩阵中每个列的元素与/除以列向量的相应元素。
但是,如果您在版本R2015b(我在单独的工作站中拥有的版本)上运行完全相同的代码,则会引发以下错误:
使用==
时出错矩阵尺寸必须一致。
还有一个类似的./
这是否意味着在最新版本的Matlab中更改了数组的基本数学运算的行为?我无法在文档中找到这样的更改。有什么方法可以使第一个示例在较旧的版本上起作用?
答案 0 :(得分:0)
此行为在R2016b中已更改。有关详情,请参见此博客文章:https://blogs.mathworks.com/loren/2016/10/24/matlab-arithmetic-expands-in-r2016b/
尽管可以使用bsxfun
进行显式扩展,但是在旧版本中无法获得相同的隐式扩展行为。