1
我是SO和Matlab的新手,請原諒任何違規行爲。 我試圖將看似簡單的時間戳字符串數組轉換爲等效的秒數組。在Matlab中將時間戳數組轉換爲秒數
我寫了一個這樣的功能:
% Function to calculate seconds from a timestamp in the following format:
% ddd hh:mm:ss.SSSS (example: 123 12:59:00.9999)
function a = TimestampToS(stamp)
% Uses the "named tokens" facility of MATLAB's "regexp" function.
expr = ['(?<ddd>\d+)' ... % ddd
' ' ... % Space " " separator
'(?<hh>\d+)' ... % hh
':' ... % Colon ":" separator
'(?<mm>\d+)' ... % mm
':' ... % Colon ":" separator
'(?<ss>\d+)' ... % ss
'.' ... % Dot "." separator
'(?<SSSS>\d+)']; % SSSS
parsedStamp = regexp(stamp, expr, 'names');
a = (str2double(parsedStamp.ddd) * 86400) + ...
(str2double(parsedStamp.hh) * 3600) + ...
(str2double(parsedStamp.mm) * 60) + ...
(str2double(parsedStamp.ss)) + ...
(str2double(parsedStamp.SSSS) * 0.0001);
它爲個人字符串的偉大工程:
>> TimestamptoS('123 12:59:00.9999')
ans =
1.067394099990000e+007
但是,如果我嘗試使用電池陣列我得到:
Attempt to reference field of non-structure array.
我怎樣才能得到一個秒數組?我嘗試過輸入數據和「parsedStamp」的各種轉換,但沒有任何效果。我不太瞭解Matlab或其矩陣表示法。任何幫助感激地收到!
PS這不是一個正則表達式問題,請不要回復regexp!
完美答案路易斯,謝謝你的時間。我希望這可以作爲未來其他人的參考! PS對不起,我沒有足夠的聲望尚未得到讚揚。 – fodfish
@fodfish很高興能幫到你:-)歡迎來到StackOverflow! –