2014-01-23 59 views
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

任何幫助!?

回答

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 
+0

謝謝!我的兩個小時只是盯着代碼浪費了一點小小的錯誤。 – user3226108

相關問題