我有一个整数矩阵,我需要用-5替换2的所有外观.最有效的方法是什么?我按照下面的方式制作,但我相信有更优雅的方式.
a=[1,2,3;1,3,5;2,2,2]
ind_plain = find(a == 2)
[row_indx col_indx] = ind2sub(size(a), ind_plain)
for el_id=1:length(row_indx)
a(row_indx(el_id),col_indx(el_id)) = -5;
end
Run Code Online (Sandbox Code Playgroud)
而不是循环II寻找类似的东西:a(row_indx,col_indx)= -5,这是行不通的.
And*_*ein 26
find在这种情况下不需要.改为使用逻辑索引:
a(a == 2) = -5
Run Code Online (Sandbox Code Playgroud)
在搜索矩阵是否相等的情况下,inf您应该使用
a(isinf(a)) = -5
一般情况是:
Mat(boolMask) = val
Mat你的矩阵在哪里 ,boolMask是另一个logical值矩阵,是val赋值
Mar*_*n B 13
试试这个:
a(a==2) = -5;
Run Code Online (Sandbox Code Playgroud)
版本稍长一些
ind_plain = find(a == 2);
a(ind_plain) = -5;
Run Code Online (Sandbox Code Playgroud)
换句话说,您可以使用线性索引直接索引矩阵,无需使用它们进行转换ind2sub- 非常有用!但如上所示,如果使用布尔矩阵索引矩阵,则可以更短.
顺便说一下,如果(通常情况下)你不想将语句的结果转储到控制台,你应该在你的语句后面加分号.