Я хотел бы пройти через массив/матрицу (вместо использования реляционного оператора ради практики/обучения в этой точке), и если выполняется простое условие, заменяется каждый элемент либо истинным, либо ложным значением, и заканчивается массивом результатов, который имеет логический класс.Matlab: замените каждый элемент значением true/false (логическим массивом)
vec = [5 9 3 4 6 11];
[r,c] = size(vec);
vecempty = zeros(r,c);
for i = 1:r;
for j = 1:c
if vec(i,j) > 5;
vecempty(i,j) = true;
else
vecempty(i,j) = false;
end
end
end
fprintf('Your truth matrix: \n\n\n')
disp(vecempty)
total = 0;
for i = 1:r;
for j = 1:c;
total = total + vecempty(i,j);
end
end
fprintf('Total number of truth elements: %d \n\n\n', total)
Для моего "VEC (I, J)" состояние, я изначально имел их "= 1" или "= 0", но я догадался, это просто предоставление число самих, а не истинным или ложным. Таким образом, я пошел с «= true» или «= false», но мне интересно, почему массив, который я возвращаю (vecempty), не отображается как класс логического?
Следуя то же значение:
Vectruth = vec > 5
результата "Vectruth" возвращаются в качестве логического класса. Я смущен, если я верну «true» или «false» в моем цикле, почему мой результирующий вектор не будет отображаться как логический класс, когда с помощью «vec> 5» он отображается как логический класс? Спасибо.
Благодарю вас, это действительно приводит к тому, что мой «вацеттист» становится логическим классом. Однако в том, что я сделал выше, есть причина в том, почему мой «вацеттист» не будет признан логическим классом? – pdhami
Когда ваш массив был инициализирован как числовой, и вы пытаетесь присвоить логическое значение одному из своих элементов, Matlab преобразует его в 0 или 1, оставляя массив численным. Если вы по какой-то причине не знали в начале, что вам действительно нужен логический массив, вы можете преобразовать его позже с помощью 'logical (vecempty)'. Но сейчас я не вижу, когда такая ситуация может возникнуть. Может быть, вы можете уточнить? – FliegenderZirkus
Обобщая то, что сказал FliegenderZirkus, когда вы индексируете назначение скобками в инициализированное значение, MATLAB принуждает значение в правой части присваивания к классу значения левой стороны. Таким образом, true и false получают принуждение к удвоению, тип, который был инициализирован vecempty. – SCFrench