C 基于MATLAB的GMT减法
我目前正在从事一个关于在MATLAB上处理时差的小项目。我有两个输入文件<代码>输入和输出时间。这两个文件包含格式为2315(GMT-小时和分钟)的时间数组C 基于MATLAB的GMT减法,c,matlab,C,Matlab,我目前正在从事一个关于在MATLAB上处理时差的小项目。我有两个输入文件输入和输出时间。这两个文件包含格式为2315(GMT-小时和分钟)的时间数组 我在MATLAB上读过Time\u in'和'Time\u out,但我不知道如何执行减法。此外,我希望相应的答案仅在分钟域中,例如(2小时30分钟=150分钟)这是几种可能的解决方案之一: 首先,您应该将时间字符串转换为MATLAB序列日期号。如果已完成此操作,则可以根据需要进行计算: % input time as string time_in
我在MATLAB上读过
Time\u in'和'Time\u 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文档的以下部分:
有问题吗?这是几种可能的解决方案之一: 首先,您应该将时间字符串转换为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文档的以下部分:
有问题吗?在最新版本的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中,您可以使用
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中的变量类型是什么?以字符串形式读取时间向量。“double”会更好吗?请参阅我的答案:
datenum
是处理日期或时间向量/strings的最佳方法这是一个关于matlab docsCan的文档非常丰富的问题,请给我们一个完整的示例?你是怎么读这两个时间向量的?它们在MATLAB中的变量类型是什么?以字符串形式读取时间向量。“double”会更好吗?请看我的答案:datenum
是处理日期或时间向量/strings的最佳方法这是matlab docsHow上一个有很好文档记录的问题。我是否将time\u in和time\u out作为输入文件,在其中可以存储数字数组。我已经尝试过了,但是'datenum'也给出了关于数组字符串的错误,我希望超时答案也是一个数字数组,这是最终的解决方案。谢谢,你能举个字符串的例子吗?这是我在前面的代码fid=fopen('time_in.txt','r')中添加的内容;fid2=fopen('time_out.txt','r');t_in=fscanf(fid);fclose(fid);t_out=fscan(fid2)fclose(fid2);如何将time_in和time_out作为输入文件,在其中存储数字数组。我已经尝试过了,但是'datenum'也给出了关于数组字符串的错误,我希望超时答案也是一个数字数组,这是最终的解决方案。谢谢,你能举个字符串的例子吗?这是我在前面的代码fid=fopen('time_in.txt','r')中添加的内容;fid2=fopen('time_out.txt','r');t_in=fscanf(fid);fclose(fid);t_out=fscan(fid2)fclose(fid2);