MATLAB读取OpenFOAM的二进制文件

OpenFOAM的文件格式

在这里插入图片描述
上面是OpenFOAM二进制文件的格式,我们可以看出,前面21行都是无关的说明文件,22开始时除了一个括号之外,其它的都是数据。

读取数据

读取数据的思路非常简单,忽略不需要的,读取需要的。
接下来我们将使用到四个函数,fopen(),fgetl(),fread(),fclose()

1、打开文件

fidU = fopen(Ufatch,'r');%Upatch为文件的路径

2、忽略不需要的注释

%%忽略头文件
for n = 1:21
    [~] = fgetl(fidU);
end
[~] = fread(fidU,1,'char');

注意这里首先忽略了21行,然后忽略了一个字节,也就是那个括弧

3、读取我们需要的数据

%%读取数据
U_mag = fread(fidU,3*nx*ny*nz,'double');

4、关闭文件

最后的最后,一定要记得关闭文件,不然程序可能会崩

fclose(fidU);

注意上面的3nxny*nz是数据的大小,nx,ny,nz是每个方向的网格数,由于速度有三个分量,所以这里乘以3。‘double’代表我们读取的是双精度的文件,告诉程序每个分量是多少个字节(这里好像是16个?忘了,不重要,知道是double就行)。前面的括弧就是只有一个字节。
这里我们就成功从二进制文件中读取到了数据!是不是非常简单。

我的代码

最后附上一个我个人写的读取数据的函数,该函数有四个输入参数,路径(fpatch),以及各个方向的网格数(gridNumY,gridNumX,gridNumZ)
返回参数是速度和温度矩阵。

%%read data
function [U,V,W,T] = readBinaryFile(fpatch,nx,ny,nz)
%---读取OpenFOAM-8二进制文件U,T
%---nx,ny,nz为网格数,fpatch为文件所在路径
Ufatch = strcat(fpatch,'U');
Tfatch = strcat(fpatch,'T');
fidU = fopen(Ufatch,'r');
fidT = fopen(Tfatch,'r');
%---读取速度数据
%%忽略头文件
for n = 1:21
    [~] = fgetl(fidU);
end
[~] = fread(fidU,1,'char');
%%读取数据
U_mag = fread(fidU,3*nx*ny*nz,'double');
un = 1:3:3*nx*ny*nz;vn = 2:3:3*nx*ny*nz;wn = 3:3:3*nx*ny*nz;
if nz==1
    U = reshape(U_mag(un),nx,ny);
    V = reshape(U_mag(vn),nx,ny);
    W = reshape(U_mag(wn),nx,ny);
elseif nz>1
    U = reshape(U_mag(un),nx,ny,nz);
    V = reshape(U_mag(vn),nx,ny,nz);
    W = reshape(U_mag(wn),nx,ny,nz);
end
fclose(fidU);
%---读取温度数据
%%忽略头文件
for n = 1:21
    [~] = fgetl(fidT);
end
[~] = fread(fidT,1,'char');
%%读取数据
T = fread(fidT,nx*ny*nz,'double');
if nz==1
    T = reshape(T,nx,ny);
elseif nz>1
    T = reshape(T,nx,ny,nz);
end
fclose(fidT);
end

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Autoware 跑 Demo(踩坑指南)

Autoware 跑 Demo(踩坑指南) 网上的博客和官方的教程,几乎都是一样的,但实际上跑不起来 Autoware 1.12学习整理–01–运行rosbag示例 Autoware入门学习(三)——Autoware软件功能使用介绍(1/3&a…

【Unity3D】激光雷达特效

1 由深度纹理重构世界坐标 屏幕深度和法线纹理简介中对深度和法线纹理的来源、使用及推导过程进行了讲解,本文将介绍使用深度纹理重构世界坐标的方法,并使用重构后的世界坐标模拟激光雷达特效。 本文完整资源见→Unity3D激光雷达特效。 1)重构…

基于51单片机的智能火灾报警系统温度烟雾光

wx供重浩:创享日记 对话框发送:火灾报警 获取完整源码源文件电路图仿真文件论文报告等 功能简介 51单片机MQ-2烟雾传感ADC0832模数转换芯片DS18B20温度传感器数码管显示按键模块声光报警模块 具体功能: 1、实时监测及显示温度值和烟雾浓度…

管理类联考——英语二——技巧篇——写作——B节——议论文——必备替换句型

议论文必备替换句型 (一)表示很明显/众所周知的句型 It is obvious thatIt is clear thatIt is apparent thatIt is evident thatlt is self-evident thatIt is manifest thatIt is well-knownIt is known to all thatIt is widely-accepted thatIt is crystal-cl…

蓝牙客户端QBluetoothSocket的使用——Qt For Android

了解蓝牙 经典蓝牙和低功耗蓝牙差异 经典蓝牙(Bluetooth Classic):分为基本速率/增强数据速率(BR/EDR), 79个信道,在2.4GHz的(ISM)频段。支持点对点设备通信,主要用于实现无线音频流传输,已成…

Ceph:关于Ceph 集群管理的一些笔记

写在前面 准备考试,整理ceph 相关笔记博文内容涉及,Ceph 管理工具 cephadm,ceph 编排器,Ceph CLI 和 Dashboard GUI 介绍理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守…

大数据分析平台释疑专用帖第二弹

不管是想要快速了解BI大数据分析平台,还是想要了解BI和自己的需求匹配度,都可关注我们的释疑专用贴。 1、可以分析直播数据吗? 严格来说,只要能够提供数据,就可以做数据可视化分析,直播数据也同理。 如果…

solr快速上手:整合SolrJ实现客户端操作(九)

0. 引言 我们前面学习了solr的服务端基础操作,实际项目中我们还需要在客户端调用solr,就像调用数据库一样,我们可以基于solrJ来实现对solr的客户端操作 1. SolrJ简介 SolrJ 是 Solr官方提供的 Java 客户端库,主要用于与 Solr 服…

Python 请求分页

文章目录 什么是 Python 中的分页带有下一个按钮的 Python 分页没有下一个按钮的 Python 分页无限滚动的 Python 分页带有加载更多按钮的分页 在本文中,我们将了解分页以及如何克服 Python 中与分页相关的问题。 读完本文后,我们将能够了解 Python 分页以…

经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用

经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用 1 YOLO-V1的简述 1.1 目标检测概述 ​ 目标检测有非常广泛的应用, 例如:在安防监控、手机支付中的人脸检测;在智慧交通,自动驾驶中的车辆检测;在智…

Parallel Desktop中按照的centos在切换root用户时,密码正确,但一直切换不成功,显示su: Authentication failure

目录 一、出现问题二、分析问题三、解决问题四、参考资料 一、出现问题 我的密码明明是输入正确的,但又一直给我报下面的错误 二、分析问题 我怀疑是我密码记错了,所以我点击Log Out,重新去输入了一下密码,发现是正确的我确认…

Build your own unconditional confidence

不要活在既定的社会价值体系中 人类的偏好大多数时候都是愚昧的 I play whatever gods give me 情绪价值稳定 解决问题的能力 Dont label yourself 真正的强者不会吝啬对他人的赞美 敬畏自然,敬畏未知事物 核心是你对这个事情是否感兴趣,觉得有价…

PHP 使用html创建PDF并设置水印

使用TCPDF库给PDF文件加水印,需要注意无法直接使用文本,需要创建水印图片后,通过图片来设置水印效果。 目录 创建PDF 创建合同模板 创建pdf文件 简单创建 设置文档信息 去掉默认页头脚 设置间距 设置字体支持中文 设置图片比例因子 …

代理ip数据采集的优缺点

随着互联网时代的到来,数据已经成为企业发展和决策的关键。但是,不同的网站它对于数据访问的限制和反爬虫措施却是给企业的数据采集带来了挑战。针对这一问题,代理IP数据采集技术应运而生。但是使用代理ip来进行数据采集也有优缺点。 一、代理…

【微信小程序】wxml、wxss、js、json文件介绍

😉博主:初映CY的前说(前端领域) ,📒本文核心:微信小程序的入门介绍 【前言】书接上回,我们知道了一个小程序的构成结构,接下来我们来进一步学习小程序的目录结构中的.wxml、.wxss、.js、.json。 目录 ⭐ 一…

List容器(Java)

文章目录 1.容器介绍1.1 容器接口结构1.2 简单解析 2. List容器创建(Member functions)3. 访问操作(Element access)3.1 get()3.2 Iterator遍历3.3 增强for循环 4. 修改操作(Modifiers)4.1 add()4.2 addAll()4.3 remove()4.4 set() 5. 容量操作(Member functions)5.1 clear() …

傻白入门芯片设计,形式化验证方法学——AveMC工具学习(二十)

目录 一、形式验证方法学 (一)什么是形式化验证? (二)与传统验证的区别? 二、AveMC工具学习 (一)什么是AveMC? (二)AveMC的工作逻辑&#x…

Redis整合jedis 学习

前言 redis简单来讲是内存数据库,因为是将数据存放到内存,因此读写速率高快(传统数据库,不是先从内存转到硬存,慢) 1.jedis连接Redis redis是java操作redis的客户端,通过他我们能通过java语句操控redis。 jedis对于…

全国大数据与计算智能挑战赛:面向低资源的命名实体识别基线方案,排名13/64,组织单位:国防科技大学系统工程学院(大数据与决策实验室)

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…

一起学SF框架系列6.1-模块core-Resource

Java虽然提供了java.net.URL类和各种URL前缀处理程序来负责处理对各种资源的访问,但对于低级别资源的访问来说还是不够充分。例如,没有标准化的实现可用于访问需要从类路径中获取或者相对于一个ServletContext的资源;也没有检查所指向的资源是…