讓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 ]
有什麼建議?
讓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 ]
有什麼建議?
這可能是一種方法與strfind
和bsxfun
-
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
可以濫用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 answerstrrep
和strfind
是實際的它應該用於字符串操作,但它們也可以用作數值數組。我想內部他們無論如何都使用ASCII表示(或其他編碼),只是返回與輸入值相同類中的輸出值。爲了我們的優勢。
非常有用,工作完美。 – user2129506 2015-04-02 14:59:36
太棒了!非常感謝您的幫助:) – user2129506 2015-04-01 15:34:07
@ user2129506 - 如果您不再需要幫助,請考慮接受其中一個答案。這告訴StackOverflow社區你已經完成了這個特定的問題,其他人可以繼續回答其他問題! – rayryeng 2015-04-02 04:12:06