元胞数组,格式读取,时间序列

2024-06-17 19:18

本文主要是介绍元胞数组,格式读取,时间序列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

function [time_axis,on,temp,nan_index]=read_data(filename)
%Function name: read_data
%得到时间轴,向岸速度分量,温度,以及空缺值index
%input=
%         filename
%output=
%         timeseries arry, original onshoal speed arry, temperature array
%example:
%clear
%clc
%filename='1016brk011.asc';
%[timeseries, U, t]=read_data(filename);
%将资料和本程序所在文件夹设置为current文件夹后,指令窗输入help read_data可看到上述内容


fid=fopen(filename,'r'); %打开mooring文件
%按格式读取mooring资料,n遍,跳过开头十行
%C=textscan(fid,'%n %c %s %n %1n %2n %f %f %f %f %f',15853,'headerlines',10);
%按格式读取全部数据,跳过开头十行
C=textscan(fid,'%n %c %s %n %1n %2n %f %f %f %f %f','headerlines',10);


%读取mooring资料组成10*1的元胞数组
%数据格式:
% C1C2C3 C4C5C6 C7 C8 C9 C10 C11
%HHMM:SS DDMMYY DIR'N SPEED E/COMP N/COMP TEMP
% (deg) (cm/s) (cm/s) (cm/s) (deg C)
%1258: 0 9 292 331.48 28.27 -13.50 24.84 22.09
% C1C2 C3C4C5C6 C7 C8 C9 C10 C11

%定义各量
year=C{6}; %年
month=C{5}; %月
day=C{4}; %日
time=C{1}; %时刻
dir=C{7}; %流速方向,由北向顺时针旋转的角度
speed=C{8}; %流速总量
temp=C{11}; %温度

%读取时间得到时间轴,例如 (92+1900,2,3,2,23,0)年月日时分秒
%time=num2str(time,'%04d');将不足4位的整数前面补0,并转为字符串
min=mod(time,100);
hh=(time-min)/100;
time_axis=datenum(year+1900,month,day,hh,min,0);

%筛选NaN值并给出其位置
nan_index=find(speed==-8888.0);
speed(nan_index)=nan;
temp(nan_index)=nan;

%坐标轴顺时针转66度后,流速方向dir2(弧度)=dir-66
%向岸为on 沿岸为along
dir2=(dir-66)*pi/180;
on=speed.*sin(dir2);
al=speed.*cos(dir2);

fclose(fid);
return
——————————————————————————————————————
fid=fopen(filename,'r') fid为通道号,与fortran的unit类似
之后的textscan,fclose,frewind,都是打开通道号
r表示只读属性

C=textscan(fid,'format',N,'param',value) 将文件以format格式,参考param属性,读入C元胞数组,每个数代表一列数据,数据各有不同。类似fortran的那个自定义数据,加百分号表示数据的一部分

format=%flagNA %4s %7.2f %1c


%表示起始 ,flag可以为+ - 或0,N代表读取位数,A为数据属性,例如%7.2f,浮点数据,%4s 四位字,%1c,强制读取一位,包括空格。默认%之间由空格断开,如果定义了字符数,则把字符串读完,再以空格分隔。但是这个格式似乎不能像fortran那样将format单独拿出来
  
param
'delimiter',{'s','\'} 表示以s 和\这两个字符来分隔,空格不再作为间断符,但怎么让两者都起作用,我没搞明。
'headerlines',10 表示跳过开头10行,再开始读取。
textscan读取后,如果文件没有结束,也没有关闭,也没有frewind,那么下一次读取将接着来。
------------------------------------------------------------------------
脚本文件
clear
clc

%载入数据
filename='1016brk011.asc';
[time_axis,u,temp]=read_data(filename);

%选择起止时间,
%时间格式(1992,2,18)or(1992,2,18,12,58,0)
start=[1992,2,10];
terminate=[1992,2,12];

n1=find(time_axis==datenum(start));
n2=find(time_axis==datenum(terminate));
plot(time_axis(n1:n2),u(n1:n2));
hold on
plot(time_axis(n1:n2),temp(n1:n2));
datetick('x',6);
-------------------------------------------------------------------------
datestr,datenum,datevec,datetick
datestr为字符型‘2001-01-29,12:34:00’类似这样,还有其他很多格式
datevec为向量型 [2001, 1, 29, 12,34,0] [2001,1,29] 都可
两者可以互转,且都可以转为datenum,一个时间点对应一个数,
这三者都可以组成数组,代表一个时间序列
作图时只能以datenum序列为坐标
plot(x,y);
datetick('x',N); N对应坐标显示的格式,显示为datestr

这篇关于元胞数组,格式读取,时间序列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1070318

相关文章

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Mysql常见的SQL语句格式及实用技巧

《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时... 目录一、常用语法汇总二、示例1.数据库操作2.表操作3.记录操作 4.高级查询三、实用技巧一、常用语

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据