我有一个矩阵,我想选择一系列元素。 例如,我想选择低于182的所有元素并交换/更改它们。 有人知道在matlab中执行此操作的简单方法或命令吗?
感谢名单
答案 0 :(得分:1)
既然你说" swap",我理解你的意思是一个向量,而不是一个矩阵。你可以这样做:
x = [ 1 34 66 22 200 55 301 ]; % data
[ values, ind ] = find(x<182);
x(ind) = x(ind(end:-1:1));
要简单地用NaN等其他值替换它们,请执行以下操作。请注意,这也适用于矩阵:
x = [ 1 34 66 22 200 55 301 ]; % data
x(x<182) = NaN;
答案 1 :(得分:1)
这些事情通常可以通过logical indexing完成:
A = randn(1,100);
B = randn(size(A));
test = (A>1|A<0); % For example, values that are greater than 1 or less than 0
A(test) = B(test);
或其他例子:
A = randn(1,100);
test = (A>1|A<0);
A(test) = randn(1,nnz(test));
或其他:
A = randn(1,100);
A(A>1|A<0) = NaN;
答案 2 :(得分:0)
你可以像这样使用循环:
for i = 1:length(matrix(:,1))
for j = 1:length(matrix(1,:))
if matrix(i,j) < 182
matrix(i,j) = NaN;
end
end
end