2015-04-01 42 views
3

A爲整數的向量,其中我想用精確的數字替換一個數字序列。用單一數字替換向量中的整數序列

實施例:

A = [ 8 7 1 2 3 4 5 1 2 3 4 5 6 7 ] 

,我想通過9替換序列1 2 3

其結果將是:

B = [ 8 7 9 4 5 9 4 5 6 7 ] 

有什麼建議?

回答

4

這可能是一種方法與strfindbsxfun -

pattern = [1 2 3]; 
replace_num = 9; 

B = A 
start_idx = strfind(A,pattern)   %// Starting indices of pattern 
B(start_idx) = replace_num %// Replace starting indices with replacement 
B(bsxfun(@plus,start_idx(:),1:numel(pattern)-1))=[] %// Find all group 
       %// indices of the pattern except the starting indices and 
       %// then delete them 
+0

太棒了!非常感謝您的幫助:) – user2129506 2015-04-01 15:34:07

+1

@ user2129506 - 如果您不再需要幫助,請考慮接受其中一個答案。這告訴StackOverflow社區你已經完成了這個特定的問題,其他人可以繼續回答其他問題! – rayryeng 2015-04-02 04:12:06

4

可以濫用strrep爲您的整數數組:

%// given 
A = [8 7 1 2 3 4 5 1 2 3 4 5 6 7] 
seq = [1 2 3]; 
rep = 9; 

%// substitution 
B = strrep(A, seq, rep) 

B = 

    8  7  9  4  5  9  4  5  6  7 

Divakar's answerstrrepstrfind是實際的它應該用於字符串操作,但它們也可以用作數值數組。我想內部他們無論如何都使用ASCII表示(或其他編碼),只是返回與輸入值相同類中的輸出值。爲了我們的優勢。

+0

非常有用,工作完美。 – user2129506 2015-04-02 14:59:36