我有一个大小为13472x1537的矩阵A
。此矩阵包含小于1的值。在我的情况下,我寻求满足以下条件的解决方案:
如果列包含小于1的值,请使用NaN
替换同一列中的所有其他值。
我能够实现一个代码,可以用之前的值(或任何值)替换这些值(小于1)。但是,我正在寻找一种解决方案,无论以后(或之前)的值是否大于1,都会将列中的每个值更改为NaN
。
我有i=1537
; t=13472
for i = 1:size(A,2)
I = A(1,i);
for t= 2:size(A,1)
if A(t,i) <= 1
A(t,i) = I;
else
I = A(t,i);
end
end
end
答案 0 :(得分:2)
摆脱循环的版本看起来像这样:
A = randn(5)+2; % Random example
[row,col] = find(A<1);
A(:,col) = NaN;
如果您希望在矩阵中保持小于1的值,则解决方案可能如下所示:
A = randn(5)+2; % Random example
[row,col,ind] = find(A<1);
b = A(ind)
A(:,col) = NaN;
A(ind) = b;
答案 1 :(得分:1)
这就像下面的
for i = 1:size(A,2)
if ~isempty(find(A(:,i) <= 1))
A(:,i)=nan(size(A,1),1);
end
end