【问题标题】:MATLAB: Return the largest number in an array?MATLAB:返回数组中的最大数?
【发布时间】:2013-07-07 16:10:12
【问题描述】:

我是 MATLAB(和这个网站!)的新手,我需要一些帮助来解决我被分配到课堂上的问题。我在这个网站上搜索了类似的 MATLAB 问题,但没有遇到任何问题。问题是要求用户返回接近零的最大数字。换句话说,编写一个函数,该函数将数字列表/数组作为输入,并返回与零相邻的最大数字。例如,如果

a=[1 -2 3 4 0 5 6 0 -7], Output: y=6.

我尝试使用我在网上找到的一个有点复杂的函数来解决这个问题,它似乎可以在 MATLAB 上运行。但是,它无法在我们的自动在线 MATLAB 评分系统上运行,因为无法识别命令“imdilate”:

  x=[1 2 0 4 5 -6 0 7 0 8]
  zero_mask = (x == 0);
  adjacent_to_zero_mask = imdilate(zero_mask, [1 0 1]);
  max_value_adjacent_to_zero = max(x(adjacent_to_zero_mask));
  y=max_value_adjacent_to_zero

我想问,有没有更简单的方法来解决这个问题而不涉及“imdilate”或其他类似的功能? 感谢您的帮助,我真的很感激!

【问题讨论】:

    标签: arrays matlab matlab-guide


    【解决方案1】:

    我想出了一个肮脏的解决方案:

    a=[0 1 -2 3 4 0 5 6 0 -7];
    I=find(a==0);
    I=unique([I+1,I-1]);
    I=I((I>0)&(I<=length(a)));
    output = max(a(I));
    

    【讨论】:

    • 有时,脏是好的 :D 我试过你的代码,它工作得完美无缺。我之前尝试过使用unique,但我认为我没有正确设置命令。非常感谢您的帮助!
    • @JohnWayne'sStuntDouble 实际上不需要唯一性。如果你省略它,代码仍然可以工作:I=[I+1,I-1](不管a
    • @DennisJaheruddin 是正确的。我包括“唯一”只是为了避免重复索引,但最终结果将是相同的。
    猜你喜欢
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2020-04-15
    相关资源
    最近更新 更多