Matlab中具有不同数组大小的数组操作:不同的行为取决于Matlab版本?

时间:2018-07-19 18:42:37

标签: arrays matlab

对不起,如果以前曾问过这个问题,我是该站点的新手,并尝试查找类似的问题,但在该站点或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中更改了数组的基本数学运算的行为?我无法在文档中找到这样的更改。有什么方法可以使第一个示例在较旧的版本上起作用?

1 个答案:

答案 0 :(得分:0)

此行为在R2016b中已更改。有关详情,请参见此博客文章:https://blogs.mathworks.com/loren/2016/10/24/matlab-arithmetic-expands-in-r2016b/

尽管可以使用bsxfun进行显式扩展,但是在旧版本中无法获得相同的隐式扩展行为。