pscad数据输出设置方法

首先介绍一下pscad的数据输出。
我用的是pscad4.5,直接在最上方【Project】菜单中,勾选【Save channel to disk】,软件会提供默认输出文件名,也可以自己命名。
当然也可以在【General Settings】里面设置,如下图所示。

pscad数据输出路径

在你当前project所在的路径下的一个xxx.if12文件夹里(此处xxx为你要输出数据的case文件名,后缀.if12可能未必相同,但只要根据case文件名就可以唯一定位文件夹了,所以不用纠结)。
比如我整个workspace(其中就一个project)在桌面DFIG文件夹中,要输出数据的是“DFIG_3in1”case,那么对应的输出文件就在上图圈出的文件夹中。

两类文件

单纯的一串数字其实是没有任何意义的,还必须知道数据对应的是哪个通道、数据的含义、维度、单位等(可以将这些称之为数据的信息)。所以pscad进行数据输出会一次性输出两类文件:数据文件+信息文件。

数据文件

后缀为.out,画风如下图所示。
基本上就是一堆数字,给你你也完全摸不着头脑。但还是要说明一下:每个数据文件都是x行11列。第一列是时间信息,后续每一列就是一个通道的数据;具体有多少行和仿真总时长以及采样步长有关。
当输出的通道数超过10,pscad会自动生成多个数据文件,如下图所示。

接下来就要知道每一列分别具体对应哪个通道,以及数据的单位等信息。这时信息文件的作用就体现出来了。

信息文件

后缀为.infx,画风如下图所示。
可用信息:【索引值index】【变量名name】【维度dim】【单位unit】,这也是我们后续数据处理需要提取出来的信息。

MATLAB处理

首先我是直接将待处理数据文件和信息文件统一放到m文件同路径下,理论上应该是可以设置文件路径然后去该路径下读取的,但此处先不考虑。

信息文件处理

此处参考了另一篇博文:

https://blog.csdn.net/qq_36976807/article/details/105439321

代码如下:

fid = fopen('DFIG_2011_03.infx');  %先打开文件,输入形参为对应文件名
c1=textscan(fid,'%*s%s%*s%*s%*s%s%*s%*s%*s%n%*s%s%*[^\n]','delimiter','"','headerlines',6);
%使用的函数为textscan函数
%形参1为fopen函数的返回值
%形参2为读取文件的格式,也是最关键的部分,会在下文单独介绍
%形参3、4为设置分隔符,我认为这是关键部分之二
%形参5、6为设置跳过文件前x行,headerlines这里设置6可以跳过前面6行
fclose(fid);
sequence=c1{1};
name=c1{2};
dim=c1{3};
unit=c1{4};

首先说一下delimiter参数。该参数实际上就是设定如何去划分一堆数据:给了一堆数据,哪个是数据1,哪个是数据2。通常都是以空格分隔,这实际上也是MATLAB默认的分隔符。比如下面的一行数据,以空格分隔就是7个数据;以双引号划分就是5个数据。

1 2 "str1" "str2" 3 4 5

由于infx文件的关键信息都夹在在双引号中间,所以我们以双引号为delimiter

下面介绍形参2。参考了mathworks的官方教程:

https://www.mathworks.com/help/matlab/ref/textscan.html

'%*s%s%*s%*s%*s%s%*s%*s%*s%n%*s%s%*[^\n]'
1、%s表示读取一个字符串
2、%*s表示跳过一个字符串(*表示跳过)
3、%n表示读取一个double
4、%*[^\n]表示skipping the rest of the line,即跳过该行剩余部分,因为后面的数据我们并不需要。
5、所以实际上这一串格式字符的书写是需要我们照着infx文件挨个儿数过来:
哪个数据是我们需要的,就用百分号加上对应的格式控制符;
不需要的就用*跳过(百分号和格式控制符还是要加上的)。
必要时用%*[^\n]跳过剩余部分。

具体输出效果不详述,相信大家实际运行一遍就明白。

数据文件处理

我是先把所有数据先读取到MATLAB中,然后根据自己的需要去取用对应的数据。主要分为以下几步:

确定读取格式

因为最后一个数据文件可能并不是恰好11列,所以 textscan 函数控制读取格式的形参会有所不同,具体代码如下:

%确定读取格式
fileNum=8;
format=string(zeros(1,fileNum));
for i=1:fileNumformat(i)="";
end
col2=mod(length(seq),10)+1;%最后一个数据文件的列数for i=1:fileNumif i==fileNumfor j=1:col2format(i)=format(i)+"%f64";endformat(i)=format(i)+"%*[^\n]";%如果是只读前面几列,一定要用%*[^\n]来跳过后面不读的列,不然matlab会把后面也读进来,就串了。elsefor j=1:11format(i)=format(i)+"%f64";endend
end

要注意的是:如果是只读前面几列,一定要用%*[^\n]来跳过后面不读的列,不然matlab会把后面也读进来,就串了。 这在注释中也有说明。

生成数据文件名

主要是为了做到全自动化,避免手动输入,代码如下:

%文件名
filename=string(zeros(1,fileNum));
for i=1:fileNumfilename(i)="DFIG_0"+i+".out";
end

MATLAB处理txt文档数据——以处理pscad输出数据为例相关推荐

  1. matlab读写txt文档

    1.matlab读取txt文档行数 fid = fopen('test.txt') lines = 0; while ~feof(fid)fgetl(fid);lines = lines +1; en ...

  2. 串口摄像头得到了一张图像的JPEG数据,我把这些数据复制到txt文档了,想将这些数据变为图像...

    从串口摄像头得到了一张图像的JPEG数据,我把这些数据复制到txt文档了,想将这些数据变为图像,在VC++中应该怎么做呢?看了一 些资料,有人说直接保存成jpg格式,于是我把文件名的后缀.txt改成了 ...

  3. matlab修改txt文档内容

    方法一:使用fscanf函数,但会出现问题:读入的数据类型必须相同,否则不能读入. 方法二:按行读取按行修改,可以完成任务要求,缺点是相对费时.以下介绍具体步骤. (1)以读的形式打开文本:fopen ...

  4. C语言读取txt文档中的数据

    1.说明    txt文档中的数据格式:前后数据用空格隔开:    数据来源:matlab读取彩图的R.G.B三层的像素值,分别存放在三个txt文档中,用C读取到一维数组.    动态申请数组,还是需 ...

  5. matlab通过变量调用txt文件路径,MATLAB使用load函数读取txt文档

    MATLAB在数据处理方面应用非常广泛.在众多的专业领域里,把各种手段获取的数据存入txt文档中非常常见.如果txt文件中数据为矩阵形式,通常可以采用简单的load命令来读取数据,然后在MATLAB中 ...

  6. matlab 职坐标,C/C++知识点之Matlab 与 c++对txt 文档的读写格式

    本文主要向大家介绍了 C/C++知识点之Matlab 与 c++对txt 文档的读写格式,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助. 学习g++能够读取什么格式的txt文件. ...

  7. 如何用TXT文档数据批量生成条形码

    我们在制作商品标签的时候,经常需要根据已有的条码数据来批量生成条形码.这些条码数据一般存储在TXT文档.excel表或者是其他类型数据库中,具体怎么操作呢?我们就以TXT文档做实例,和大家分享一下如何 ...

  8. python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...

    前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过 ...

  9. matlab 如何读取二进制、十六进制txt文档

    本方法同样适合读取十六进制和二进制以外的其他进制文件, txt使用一个最简单的命令就可以读取 textread 这是一个十分有用,简便的函数(对于fopen fscanf而言) 读取二进制txt文件: ...

  10. Txt文档数据的写入与读取

    一.怎么填写表格资料时退出软件后,在下次启动时还能显示在页面上呢,刚开始也捣鼓了不久的时间,最后还是考虑用txt文档来保存输入的内容. 1.定义文件保存位置,以及文件名称和后缀. String Fil ...

最新文章

  1. php是否直接支持函数的重载,php函数重载的替代方法--伪重载详解
  2. 【Java】Java枚举类型示例
  3. springbot集成finereport后在web中使用iframe引用报表
  4. 处理SAP Netweaver gateway service使用过程中遇到的404 error
  5. Linux中,Tomcat 怎么承载高并发(深入Tcp参数 backlog)
  6. Halcon学习路线——Blob分析(1)
  7. [UITableViewCell]小结
  8. python3安装MySQLdb
  9. 微信小程序获取二维码报错:{“errcode“:47001,“errmsg“:“data format error hint:“}
  10. Docker 使用手册
  11. 继电器写法c语言单片机,51单片机-继电器编程
  12. linux a卡双显卡切换显卡,amd显卡驱动 双显卡切换
  13. 中国农业大学计算机考研复试分数线,2020中国农业大学考研复试分数线已公布...
  14. 我的世界java怎么改随机刻度_我的世界随机刻速度指令是什么
  15. 微信小程序第三方平台开发配置
  16. uniapp 微信小程序授权获取手机并绑定登录
  17. 【信号与系统】如何求系统的冲激响应和阶跃响应
  18. 深入理解函数式编程(下)
  19. (附源码)ssm+mysql+基于SSM框架的图片分享及评价网站设计与实现 毕业设计201524
  20. Pytorch 叶子张量 leaf tensor (叶子节点) (detach)

热门文章

  1. Android Jni开发-实战篇(CMake)
  2. 博客经常出现保存博文失败
  3. 大智慧交易系统测试软件,大智慧交易系统测试平台使用操作教程
  4. 开放源代码是如何吞噬软件的
  5. 要点初见:用Python进行微观交通模型仿真——基于SUMO的伯克利开源项目Flow Project初探与拓展
  6. uniapp小程序优化和减小代码体积的方式
  7. 利用PYTHON代码,自动玩王者荣耀,再也不担心女朋友打电话
  8. Python Lex Yacc手册
  9. 火山安卓帧布局器的基本使用方式
  10. MATLAB均值滤波