有没有人知道是否有一种简单的方法来制作这种if-loop:
如果a或b(或更多)等于1,那么只有那些真实变量的新值才会变为例如1。 5?!
答案 0 :(得分:3)
如果我理解你的问题,试试这个
newValue = 5;
valueToFind = 1;
vector = [2 3 4 6 1 3 2 1 3];
vector(vector==valueToFind) = newValue;
更新(以回复下面的评论):
没有一种正确的方法可以做到这一点,但我可能会制作一个价值观的“表格”来寻找以及如何与新的同行相提并论。例如,
valuesTable = [1 3 4 6 9;... %#old values
2 0 5 7 0]; %#new values
然后您可以按如下方式浏览它们:
vector = [2 3 4 6 1 3 2 1 3];
valuesTable = [1 3 4 6 9;... %#old values
2 0 5 7 0]; %#new values
N = size(valuesTable,2); %#count indices to go through
for n = 1:N
old = valuesTable(1,n); %#get current old value
new = valuesTable(2,n); %#get corresp. new value
vector(vector==old) = new; %#replace the values
end
可能有其他方法而不是我的“表格”方法,但我发现它清晰,明显且易于阅读。
答案 1 :(得分:0)
要将Phonon的答案扩展到您要查找多个值的情况,请使用ismember
。
newValue = 5;
valuesToFind = [1 3];
vector = [2 3 4 6 1 3 2 1 3];
vector(ismember(vector, valuesToFind)) = newValue