如何在不使用for
的情况下在一个matlab行中编写以下内容?
for i=1:5
a(a==i) = b(i);
end
答案 0 :(得分:1)
a
是否仅由[1:5]中的值组成?您的问题标题表示您希望使用a
的值作为b
的索引。你可以直接这样做:
a = b(a);
答案 1 :(得分:0)
它有点混乱,但它有效,
a = randi(9,[5 5]);
i = 1 : 5;
b = [5 7 8 9 2];
[c,loc] = ismember(a,i);
loc = reshape(loc,1,[]);
loc(loc>0) = b(loc(loc>0));
loc = reshape(loc,size(c));
a.* ~c + loc .* c
例如,
aold =
7 2 8 1 8
9 1 9 3 3
4 9 1 1 2
2 8 8 5 1
1 7 7 5 4
anew =
7 7 8 5 8
9 5 9 8 8
9 9 5 5 7
7 8 8 2 5
5 7 7 2 9
和b = [5 7 8 9 2];
。