matlab比较差异

Posted

技术标签:

【中文标题】matlab比较差异【英文标题】:matlab comparision difference 【发布时间】:2013-09-19 15:27:50 【问题描述】:

if tf < max(arr) 对比。 if all(tf < max(arr))

    它们有什么区别 推荐哪一种。 它们是否完全相同?

我在第一个使用 matlab 编码器时遇到错误!

编辑

我有

if (xf-x0 < small_dist)&&(v0 <= min(vmax0, vmaxf))

并考虑将其更改为

leftCmpStatement = all((xf-x0 < small_dist));
rightCmpStatement = all((v0 <= min(vmax0, vmaxf)));
if leftCmpStatement && rightCmpStatement

因为 matlab 编码器抱怨 并不是每个元素都是1X1 double variable

【问题讨论】:

【参考方案1】:

如果numel(max(arr))1,它们是相同的。如果不是,那么如果tf &lt; max(arr) 将只考虑第一个最大值。但由于所有max(arr) 元素都将具有相同的值,它仍然可以工作。

但是,如果您使用的函数可能会返回不同的值,例如简单地 if tf &lt; arrif all(tf &lt; arr) 那么它们是不同的。 if all(tf &lt; arr) 按预期工作,如果必须小于 arr 的每个元素。但是if tf &lt; arr 变成了类似于if [true false true false false...] 的东西,并且(感谢 Amro 指出这一点)Matlab 只会在它既非空且所有元素都非零时才认为这是真的。所以在我编造的例子中,它将是false。所以这个故事的寓意是不要在 Matlab 中给if 一个多元素矩阵。所以我会选择if all(tf &lt; max(arr)) 只是为了符合该规则。

【讨论】:

我会测试并找出答案 这其中最重要的部分是...Matlab 只会考虑第一个元素。 @Frederick:这是不正确的,例如if [true false true], disp('hi'), end 不会评估为真。根据doc if:“当结果为非空且包含所有非零元素(逻辑或实数)时,计算表达式为真。否则,表达式为假。” @Amro 我测试过,你是对的,但在那种情况下,有什么区别?因为文档基本上是说他们将相当于 and all 应用于条件? @Dan:也不完全是这样;请注意 all([])true 但根据前面的引用 if [], 1, end 评估为假...我知道,这是 MATLAB 的一个令人困惑的部分 :) 还有更多这些“奇怪”的案例!提醒您一下,OP 专门在 MATLAB Coder 的上下文中进行讨论,这可能对其接受的内容有更严格的条件

以上是关于matlab比较差异的主要内容,如果未能解决你的问题,请参考以下文章

matlab的cell索引差异mkdir参数形式差异

如何在 Matlab 中获得 2 个图像之间的差异?

MATLAB:.mat 版本之间的差异

MATLAB | 绘图复刻 | 热图+差异气泡图

matlab如何测试测量值之间的显着差异?

在MATLAB中的GUIDE中打开它之前和之后GUI元素位置的差异