我目前正在處理一個處理MATLAB時差的小項目。我有兩個輸入文件; Time_in and Time_out
。這兩個文件包含格式例如2315 (GMT - Hours and Minute)
GMT在MATLAB上減法
我已經閱讀了MATLAB上的Time_in' and 'Time_out
,但我不知道如何執行減法。另外,我想相應的答案,也能在短時間內域只有如(2和小時30分鐘=150分鐘)
我目前正在處理一個處理MATLAB時差的小項目。我有兩個輸入文件; Time_in and Time_out
。這兩個文件包含格式例如2315 (GMT - Hours and Minute)
GMT在MATLAB上減法
我已經閱讀了MATLAB上的Time_in' and 'Time_out
,但我不知道如何執行減法。另外,我想相應的答案,也能在短時間內域只有如(2和小時30分鐘=150分鐘)
這是幾個可能的解決方案之一:
首先,你應該將時間字符串轉換爲MATLAB序列日期數。如果你這樣做,你可以做你的計算,只要你想:
% input time as string
time_in = '2115';
time_out = '2345';
% read the input time as datenum
dTime_in = datenum(time_in,'HHMM');
dTime_out = datenum(time_out,'HHMM');
% subtract to get the time difference
timeDiff = abs(dTime_out - dTime_in);
% Get the minutes of the time difference
timeout = timeDiff * 24 * 60;
此外,計算的時間差正確,你也應該把關於你的時間向量日期的一些信息,以計算正確的時間在午夜左右。
如果您需要了解的功能datenum
你應該閱讀文檔MATLAB的以下部分的詳細信息:
https://de.mathworks.com/help/matlab/ref/datenum.html
有問題嗎?
在MATLAB的最新版本中,您可以使用textscan
以及datetime
和duration
數據類型來執行此操作。
% read the first file
fh1 = fopen('Time_in');
d1 = textscan(fh1, '%{HHmm}D');
fclose(fh1);
fh2 = fopen('Time_out');
d2 = textscan(fh2, '%{HHmm}D');
fclose(fh2);
注格式指示符'%{HHmm}D'
告訴MATLAB閱讀4位字符串轉換成datetime
陣列。
d1
和d2
現在是cell
陣列,其中唯一元素是datetime
向量。您可以減去這些,然後使用minutes
功能找到的分鐘數。
result = minutes(d2{1} - d1{1})
請給我們一個完整的例子嗎?你是怎麼讀這兩個時間向量的?他們在MATLAB中的變量類型是什麼? – bushmills
將時間矢量讀取爲字符串。 「雙倍」會更好嗎? – Akby
看到我的答案:'datenum'是處理日期或時間向量/字符串的最佳方式 – bushmills