• Регистрация
Hollydolly
Hollydolly 0.00
н/д

Вопрос про матрицы

18.09.2020

Имеется произвольный массив а и массив а_max, который состоит из максимальных элементов массива а (то есть массив одномерный), требуется построить третий массив y по условию, если a(i,j)=a_max, то y(i,j) = 1, а если a(i,j) не равно a_max, то y(i,j) =0.

Приведу пример задачи:

a(10 12;20 16); a_max(12;20)

y(0 1;1 0)

Вот собственный код: ( попытался сделать через поэлементное деление, так как не знаю про поэлементное приравнивание, но выходят в массиве y только нули почему-то)

clc
clear
m=input('n=')
n=input('m=')

a_max=max(a,[ ],2)

for i=1:m
for j=1:n
if a(i,j)./a_max==1
y(i,j)=1
else y(i,j)=0
end
end
end

 

 

Лучший ответ

  • Centurio+42.00
    18.09.2020 12:00

    У вас получился массив из двух максимальных элементов, а вы пытаетесь поэлементно разделить на него один элемент. Да и зачем делить, а потом сравнивать результат с единицей, когда можно сразу спавнивать элемент с максимальным значеникм?

    Лучше всего, конечно, сравнение производить сразу для всех элементов.

    n=size(a,2);

    a_max=max(a,[],2);

    A_max=repmat(a_max,1,n);

    y=double(a==A_max);

Ответы

  • Centurio
    Centurio+42.00
    18.09.2020 17:49

    У вас получился массив из двух максимальных элементов, а вы пытаетесь поэлементно разделить на него один элемент. Да и зачем делить, а потом сравнивать результат с единицей, когда можно сразу спавнивать элемент с максимальным значеникм?

    Лучше всего, конечно, сравнение производить сразу для всех элементов.

    n=size(a,2);

    a_max=max(a,[],2);

    A_max=repmat(a_max,1,n);

    y=double(a==A_max);