用另一个数组的位置数替换特定数量的数组

时间:2014-01-23 08:09:23

标签: 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]

我想编写一个函数,用任意特定数量的arr1替换该索引的arr2个数。假设我想从2替换arr1,那么输出应为

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

任何帮助!?

1 个答案:

答案 0 :(得分:3)

你快到了:

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