Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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
Arrays 用另一个数组的该位置的编号替换数组的特定编号_Arrays_Matlab - Fatal编程技术网

Arrays 用另一个数组的该位置的编号替换数组的特定编号

Arrays 用另一个数组的该位置的编号替换数组的特定编号,arrays,matlab,Arrays,Matlab,我正在尝试编写一个函数,用另一个数组的该位置的数字替换一个数组的特定数字。然而,它不允许我这样做。我对使用MATLAB很陌生。任何帮助都将不胜感激 arr1 = [ 1 3 8 9 2 47 10 4 2 4 6 86 6 8 11 4]; arr2 = [ 3 4 1 8 8 2 99 1 0 6 77 11 9 3 2 1] 我

我正在尝试编写一个函数,用另一个数组的该位置的数字替换一个数组的特定数字。然而,它不允许我这样做。我对使用MATLAB很陌生。任何帮助都将不胜感激

arr1 = [
    1     3     8     9
    2    47    10     4
    2     4     6    86
    6     8    11     4];

arr2 = [
    3 4  1  8
    8 2 99  1
    0 6 77 11
    9 3  2  1]
我想编写一个函数,用该索引的
arr2
数替换任何特定的arr1数。假设我想从
arr1
替换
2
,那么输出应该是

out = [ 
    1     3     8     9
    8    47    10     4
    0     4     6    86
    6     8    11     4];

arr1(arr1==2) = arr2(arr1==2)
这使我能够这样做。但是,它不允许我编写像这样的泛化函数

function new = arrayReplace(arr1,arr2,number)
    idx = arr1==number;
    new = (arr1(idx)=arr2(idx));
end
更换任意数量的
arr1

有人帮忙吗

你就快到了:

function arr1 = arrayReplace(arr1,arr2,number)
    idx = arr1==number;
    arr1(idx) = arr2(idx);
end
或者,也许不那么令人困惑:

function arr3 = arrayReplace(arr1, arr2, number)
    idx  = arr1==number;
    arr3 = arr1;
    arr3(idx) = arr2(idx);
end

谢谢一个小小的错误浪费了我两个小时,只是盯着代码看。