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

Arrays MATLAB:返回数组中的最大数?,arrays,matlab,matlab-guide,Arrays,Matlab,Matlab Guide,我是MATLAB新手(和这个网站!),我需要一些帮助来解决我被分配到课堂上的一个问题。我在这个网站上搜索了类似的MATLAB问题,但没有发现任何问题。问题是要求用户返回最大的数字,该数字靠近零。换句话说,编写一个函数,该函数以数字列表/数组作为输入,并返回与零相邻的最大数字。例如,如果 a=[1 -2 3 4 0 5 6 0 -7], Output: y=6. 我试图用我在网上找到的一个有点复杂的函数来解决这个问题,它似乎在MATLAB上工作。但是,它在我们的自动在线MATLAB评分系统上不起

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

a=[1 -2 3 4 0 5 6 0 -7], Output: y=6.
我试图用我在网上找到的一个有点复杂的函数来解决这个问题,它似乎在MATLAB上工作。但是,它在我们的自动在线MATLAB评分系统上不起作用,因为无法识别命令“imdicate”:

  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
我想问,有没有更简单的方法来解决这个问题,而不涉及“imdeflate”或其他类似的函数?
谢谢你的帮助,我真的很感激

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

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));
a=[01-233040560-7];
I=find(a=0);
I=唯一([I+1,I-1]);

I=I((I>0)和(Isometime,dirty是好的:D我尝试了你的代码,它工作得非常完美。我以前尝试过使用
unique
,但我认为我没有正确设置命令。非常感谢你的帮助!@JohnWayne'sStuntDouble实际上不需要unique。如果你忽略它,代码仍然可以工作:
I=[I+1,I-1]
(不管
a
)@DennisJaheruddin是正确的。为了避免重复索引,我加入了“unique”,但最终结果是一样的。