0

私は MATLAB (およびこの Web サイト!) を初めて使用し、クラスに割り当てられた問題について助けが必要でした。この Web サイトで同様の MATLAB 問題を検索しましたが、何も見つかりませんでした。問題は、ユーザーにゼロの隣にある最大の数値を返すように求めることです。つまり、数値のリスト/配列を入力として受け取り、ゼロに隣接する最大の数値を返す関数を作成します。たとえば、

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

オンラインで見つけたやや複雑な関数を使用して問題を解決しようとしましたが、MATLAB で動作するようです。ただし、コマンド「imdilate」が認識されないため、自動化されたオンライン MATLAB グレーディング システムでは機能しません。

  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 に答える