假設我有這個數字范圍,我想擴大這些間隔。我的代碼在這里出了什么問題?我得到的答案不正確:(
間隔僅表示為 - 每個“事物”由 ; 分隔
我希望輸出為:-6 -3 -2 -1 3 4 5 7 8 9 10 11 14 15 17 18 19 20
range_expansion('-6;-3--1;3-5;7-11;14;15;17-20 ')
function L=range_expansion(S)
% Range expansion
if nargin < 1;
S='[]';
end
if all(isnumeric(S) | (S=='-') | (S==',') | isspace(S))
error 'invalid input';
end
ixr = find(isnumeric(S(1:end-1)) & S(2:end) == '-') 1;
S(ixr)=':';
S=['[',S,']'];
L=eval(S) ;
end
ans =
-6 -2 -2 -4 14 15 -3
uj5u.com熱心網友回復:
您可以使用替換regexprep和定義范圍的。這些是由它們前面有一個數字來標識的。結果是一個字串,可以使用. 但是,由于此函式評估字串,為了安全起見,首先檢查字串是否僅包含允許的字符:;,-:-str2num
in = '-6;-3--1;3-5;7-11;14;15;17-20 '; % example
assert(all(ismember(in, '0123456789 ,;-')), 'Characters not allowed') % safety check
out = str2num(regexprep(in, {'(?<=\d)-' ';'}, {':' ','})); % replace and evaluate
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526243.html
標籤:matlab范围
上一篇:如何處理反應專案中的兩個package.json檔案
下一篇:計算擬合曲面上的法向量
