0

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

4

1 回答 1

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));
于 2013-07-07T16:32:50.847 回答