function Z=replacez(A)
[M,N]=size(A);
for i=1:M
for j=1:N
if A(i,j)<0
Z(i,j)=77;
else
Z(i,j)=A(i,j);
end
end
end
这是MATLAB中的一个简单函数,用数字77替换了数组A
的负数。可以不使用for
循环但使用find
函数来实现?
到目前为止,我知道find(A<0)
返回的数组的位置为数组A
的负数。例如,A=[1 , 0 , -3; -4 , 1 , -2]
,find(A<0)
将返回{{1} }
答案 0 :(得分:4)
如果出于某些原因您确实需要使用find
,我建议您使用该功能
function Z = replacez(A)
Z = A;
Z(find(Z<0)) = 77;
end
但是您应该避免它。确实,根据Matlab的find
:
要直接在
X
中找到满足条件X<5
的元素,请使用X(X<5)
。 避免使用诸如X(find(X<5))
之类的函数调用,而不必要在逻辑矩阵上使用find。
find
在这里是多余的,您可以这样做
function Z = replacez(A)
Z = A;
Z(Z<0) = 77;
end