gpt4 book ai didi

matlab - 禁用 MATLAB 的隐式扩展

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:49 25 4
gpt4 key购买 nike

最近,在 R2016b 中,MATLAB 增加了一个功能,这让我所在的学校很头疼。

如今,传统上被认为是非法的或至少是可疑数学的公式已成功执行:

[1, 2] + [3, 4]'    -> [4, 5; 5, 6]
[1, 2]' + [3, 4, 5] -> [4, 5, 6; 5, 6, 7]

因此,将行向量添加到列向量被视为两个矩阵的加法,可以通过重复向量直到“合适的”维度来获得。在旧版本中,这会产生一条错误消息,告知无法添加具有不同维度的矩阵。

我认为问为什么有点宽泛,但如果你知道为什么,我很想知道。相反,我会问,有没有办法禁用此功能?对于新手程序员来说,这是一个充满伤害的世界,因为传统的数学似乎并不一致,并且生成的矩阵经常被忽视,只会在以后导致错误。

我认为这不是 MATLAB 语法和行为的有用部分,因为它需要太多的解释,解读程序员的意图。 repmat 是有原因的,可以引入一个专门的功能来适应这个东西的需要。

最佳答案

正如@PhelypeOleinik 所提到的,这是(自 R2016b 起)语言的核心部分,并且有充分的理由,如引用的博客文章中所述。

但是,如果您真的想禁用它...

  1. 在路径的某处创建一个名为 @double 的文件夹。
  2. 在此文件夹中,制作一个文件plus.m

在文件中,放入如下内容:

function out = plus(in1, in2)
% do some things here
out = builtin('plus', in1, in2)

我在上面有评论的地方,你可以放任何你喜欢的代码:其中可以包括检查输入是否符合你想要的“大小兼容性”规则的代码,如果不符合这些规则,则会出现错误。

对函数 minustimesldividerdividepower< 做类似的事情,以及您要修改的其他功能。

PS请不要真的这样做,开发人员非常努力地实现隐式扩展,如果他们看到你这样禁用它,他们会哭的......

关于matlab - 禁用 MATLAB 的隐式扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49535504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com