Matlab 使用命令“更改矩阵”;查找“;还有面具

Matlab 使用命令“更改矩阵”;查找“;还有面具,matlab,find,Matlab,Find,我用的是矩阵和面具。我尝试了魔术(3),因此我的矩阵是: 816;3 5 7;4 9 2。我还有一个0的面具;1 0 1;01。 现在我做查找(mask==1)。所以我得到了mask==1的索引。 但从现在起,我被困住了。我想像这样改变矩阵。 在find(mask..)返回的所有索引中,我想检查矩阵的值是否有某个值,如果没有,则将其设置为0 你能帮帮我吗 编辑:假设矩阵的值(掩码为1)小于4,则将其更改为零。结果应该是[8 0 6;0 5 7;4 9 0] 如果我理解正确,解决方案非常简单: A

我用的是矩阵和面具。我尝试了魔术(3),因此我的矩阵是:

816;3 5 7;4 9 2
。我还有一个
0的面具;1 0 1;01
。 现在我做
查找(mask==1)
。所以我得到了mask==1的索引。 但从现在起,我被困住了。我想像这样改变矩阵。 在find(mask..)返回的所有索引中,我想检查矩阵的值是否有某个值,如果没有,则将其设置为0

你能帮帮我吗


编辑:假设矩阵的值(掩码为1)小于4,则将其更改为零。结果应该是
[8 0 6;0 5 7;4 9 0]

如果我理解正确,解决方案非常简单:

A = magic(3); %//Example matrix
mask = A<4;   %//Example mask
A(mask)=[];   %//Element removal. Risky if reshape is required later!
%// or A(mask)=0;
%// or A(mask)=NaN;
A=magic(3);%//示例矩阵

mask=A如果我理解正确,解决方案非常简单:

A = magic(3); %//Example matrix
mask = A<4;   %//Example mask
A(mask)=[];   %//Element removal. Risky if reshape is required later!
%// or A(mask)=0;
%// or A(mask)=NaN;
A=magic(3);%//示例矩阵

mask=A我会这样做:

A =  [8 1 6;3 5 7;4 9 2];
mask = [0 0 0;1 0 1;0 0 1];

%// To know your elements of A greater than the desired value
A_indexes = A > threshold;

%// To get the mask values (note: if your mask is always 
%// binary, this step is not needed) 
mask_indexes = mask == 1;

%// The elements you want to modify
indexes = A_indexes & mask_indexes;

%// Finally the modification
A(indexes) = 0;

我会这样做:

A =  [8 1 6;3 5 7;4 9 2];
mask = [0 0 0;1 0 1;0 0 1];

%// To know your elements of A greater than the desired value
A_indexes = A > threshold;

%// To get the mask values (note: if your mask is always 
%// binary, this step is not needed) 
mask_indexes = mask == 1;

%// The elements you want to modify
indexes = A_indexes & mask_indexes;

%// Finally the modification
A(indexes) = 0;

请为该示例添加所需的输出。如果掩码为0,您希望如何处理这些值?保持不变?我编辑了我的问题@Minion是的,保持不变。如果我能做一个垂直向量,它会删除值而不是将其设置为0,那就更好了。请为这个例子添加所需的输出。对于掩码为0的那些值,您想做什么?保持不变?我编辑了我的问题@Minion是的,保持不变。如果我能做一个垂直向量,它会删除值而不是将其设置为0,那就更好了。真丢脸。我尝试过各种复杂的解决方案,但这很容易。谢谢但是也可以删除而不是将其设置为0吗?Edit1:谢谢,但我的意思是完全删除,所以我的矩阵变小了。我想我必须重塑()它,但我不知道如何删除它。你不能只是重塑它,因为你不知道有多少元素会以这种方式被删除。。。。这就是为什么
NaN
可能有用的原因。因为我需要它作为垂直向量,所以首先重塑矩阵没有问题。这就是为什么我希望,我可以从垂直向量形状的矩阵中删除该值。那么,看看我的答案-
A(ind)=[]
命令删除元素。谢谢!我接受了你的回答,真丢脸。我尝试过各种复杂的解决方案,但这很容易。谢谢但是也可以删除而不是将其设置为0吗?Edit1:谢谢,但我的意思是完全删除,所以我的矩阵变小了。我想我必须重塑()它,但我不知道如何删除它。你不能只是重塑它,因为你不知道有多少元素会以这种方式被删除。。。。这就是为什么
NaN
可能有用的原因。因为我需要它作为垂直向量,所以首先重塑矩阵没有问题。这就是为什么我希望,我可以从垂直向量形状的矩阵中删除该值。那么,看看我的答案-
A(ind)=[]
命令删除元素。谢谢!我接受了你的回答。