Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 基于MATLAB的GMT减法_C_Matlab - Fatal编程技术网

C 基于MATLAB的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上处理时差的小项目。我有两个输入文件<代码>输入和输出时间。这两个文件包含格式为2315(GMT-小时和分钟)的时间数组


我在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);