从矩阵中选择一系列值并交换它们

时间:2013-08-10 15:46:11

标签: matlab matrix range swap

我有一个矩阵,我想选择一系列元素。 例如,我想选择低于182的所有元素并交换/更改它们。 有人知道在matlab中执行此操作的简单方法或命令吗?

感谢名单

3 个答案:

答案 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
相关问题