Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何复制一个数组';s值,其中第二个数组的索引等于第一个数组的值?_Matlab - Fatal编程技术网

Matlab 如何复制一个数组';s值,其中第二个数组的索引等于第一个数组的值?

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

如何在一行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 .* 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、 e
a
可能是
[2 3 1 1 5]
,而
b=[0 0 10 10]
。结果应该是:
[0110]
是的,这很有效。它不必包含所有这些内容。您的测试用例运行良好。