Я новичок в MATLAB (и этот сайт!), И мне нужна была помощь с проблемой, которую я назначил для класса. Я искал этот сайт для подобных проблем 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 "или другие подобные функции? Благодарим вас за помощь, я очень благодарен!
Иногда, грязный хороший: D Я попробовал ваш код, и она работала безупречно. Раньше я пытался использовать 'unique', но я не думаю, что правильно настроил команду. Ваша помощь действительно оценена! –
@ JohnWayne'sStuntDouble Фактически уникальный не требуется. Код будет работать, если вы его опустите: 'I = [I + 1, I-1]' (Независимо от 'a') –
@DennisJaheruddin - это строгое решение. Я включил «уникальную», чтобы избежать повторных индексов, но конечный результат будет таким же. – tashuhka