MATLAB:返回数组中最大的数字?

时间:2013-07-07 16:10:13

标签: arrays matlab matlab-guide

我是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”或其他类似的功能? 谢谢你的帮助,我真的很感激!

1 个答案:

答案 0 :(得分: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));