저는이 시점에서 연습/학습을 위해 관계 연산자를 사용하는 대신 배열/행렬을 반복하고 싶습니다. 간단한 조건이 충족되면 각 요소를 true 또는 false 값으로 대체하고 논리적 클래스의 결과 배열로 끝납니다. 내 들어Matlab : 각 요소를 참/거짓 값 (논리 배열)으로 바꿉니다
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"로 논리 클래스로 표시 될 때 논리 클래스로 표시되지 않는 이유는 무엇입니까? 고맙습니다. 필요한 경우
정말 고맙습니다. 저의 "vecempty"는 논리적 인 수업이됩니다. 그러나 내가 무엇을했는지, 나의 "vecempty"가 논리적 인 계급으로 인식되지 않는 이유에 대한 이유가 있습니까? – pdhami
배열이 숫자로 초기화되고 해당 요소 중 하나에 논리 값을 할당하려고하면 Matlab에서 해당 값을 0 또는 1로 변환하여 배열의 수치를 남깁니다. 어떤 이유로 논리 배열을 원한다는 것을 처음에 알지 못했다면 나중에 논리 배열 (vecempty)로 변환 할 수 있습니다. 하지만 지금은 그러한 상황이 언제 나타날지 알지 못합니다. 어쩌면 분명히 할 수 있을까요? – FliegenderZirkus
FliegenderZirkus가 말한 것을 일반화하면, 할당 된 값을 괄호로 초기화하면 MATLAB은 할당의 오른쪽에있는 값을 왼쪽 값의 클래스로 강제 변환합니다. 따라서 true와 false가 vecempty가 초기화 된 형식 인 double로 강제 변환됩니다. – SCFrench