Matlab 如何复制一个数组';s值,其中第二个数组的索引等于第一个数组的值?
如何在一行matlab中编写以下内容,而不使用Matlab 如何复制一个数组';s值,其中第二个数组的索引等于第一个数组的值?,matlab,Matlab,如何在一行matlab中编写以下内容,而不使用for for i=1:5 a(a==i) = b(i); end 虽然有点乱,但还是管用的 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
for
for i=1:5
a(a==i) = b(i);
end
虽然有点乱,但还是管用的
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=[57892]代码>是否a
仅由[1:5]中的值组成?您的问题标题表示希望使用a
的值作为b
的索引。您可以直接这样做:
a = b(a);
b
和i
大小是否相同?a
只包含[1:5]中的值,但可能不是所有值。i、 ea
可能是[2 3 1 1 5]
,而b=[0 0 10 10]
。结果应该是:[0110]
是的,这很有效。它不必包含所有这些内容。您的测试用例运行良好。