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

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实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

python dict转换成json格式的实现

《pythondict转换成json格式的实现》本文主要介绍了pythondict转换成json格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 一开始你变成字典格式data = [ { 'a' : 1, 'b' : 2, 'c编程' : 3,

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码

利用Python实现添加或读取Excel公式

《利用Python实现添加或读取Excel公式》Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公... 目录python Excel 库安装Python 在 Excel 中添加公式/函数Python 读取

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使