Matlab处理H5文件

news2024/9/20 14:26:59

1.读取h5文件

filename='xxx.h5'; 
h5disp(filename)

2.h5文件保存为mat文件

读取 HDF5 文件中的数据

% 指定 HDF5 文件的路径
filename = 'xxx.h5';

% 读取 HDF5 文件中的各个数据集
A241_P = h5read(filename, '/A241_P');
A241_W = h5read(filename, '/A241_W');
A242_P = h5read(filename, '/A242_P');
A242_W = h5read(filename, '/A242_W');
A243_P = h5read(filename, '/A243_P');
A243_W = h5read(filename, '/A243_W');
ALTITUDE = h5read(filename, '/ALTITUDE');
GEO_LAT = h5read(filename, '/GEO_LAT');
GEO_LON = h5read(filename, '/GEO_LON');
MAG_LAT = h5read(filename, '/MAG_LAT');
MAG_LON = h5read(filename, '/MAG_LON');
PhaseX = h5read(filename, '/PhaseX');
PhaseY = h5read(filename, '/PhaseY');
PhaseZ = h5read(filename, '/PhaseZ');
UTC_TIME = h5read(filename, '/UTC_TIME');
VERSE_TIME = h5read(filename, '/VERSE_TIME');
WORKMODE = h5read(filename, '/WORKMODE');

将数据保存为 MAT 文件 

% 保存为 MAT 文件
save('xxx.mat', ...
    'A241_P', 'A241_W', 'A242_P', 'A242_W', 'A243_P', 'A243_W', ...
    'ALTITUDE', 'GEO_LAT', 'GEO_LON', 'MAG_LAT', 'MAG_LON', ...
    'PhaseX', 'PhaseY', 'PhaseZ', 'UTC_TIME', 'VERSE_TIME', 'WORKMODE');

检查 MAT 文件

% 检查保存的 MAT 文件
data = load('xxx.mat');
disp(data);

3.在 MATLAB 中绘制 H5 文件中的频谱图像 

读取数据

首先,从 H5 文件中读取波形数据。以下是读取 X 方向波形数据的示例代码:

% 指定文件路径
filename = 'xxx.h5';

% 读取 X 方向的 ELF 波形数据
A241_W_data = h5read(filename, '/A241_W');

对波形数据进行傅里叶变换

对数据进行傅里叶变换,以获得频谱信息。通常,您会对每个时间段进行傅里叶变换以生成时间-频率图。

% 获取数据的维度
[num_frequencies, num_time_steps] = size(A241_W_data);

% 初始化频谱矩阵
spectrum = zeros(num_frequencies, num_time_steps);

% 对每一列进行傅里叶变换(时间步)
for i = 1:num_time_steps
    spectrum(:, i) = abs(fft(A241_W_data(:, i)));
end

% 只取前一半频率成分
spectrum = spectrum(1:num_frequencies/2, :);

绘制频谱图

使用 imagesc 函数绘制频谱图像,其中 X 轴表示时间,Y 轴表示频率,颜色表示频率分量的幅度。

% 绘制频谱图
figure;
imagesc(10*log10(spectrum)); % 使用对数刻度显示频谱
colorbar;
title('X-Direction ELF Whistler Wave Spectrum');
xlabel('Time Index');
ylabel('Frequency Index');

频率轴映射

如果需要将频率轴映射到实际的频率单位(Hz),您需要知道采样率,并在绘图时进行适当的调整。

% 采样率
sample_rate = 10240; % Hz

% 频率轴
freq_axis = linspace(0, sample_rate/2, num_frequencies/2);

% 绘制频谱图,使用频率轴
figure;
imagesc(1:num_time_steps, freq_axis, 10*log10(spectrum));
colorbar;
title('X-Direction ELF Whistler Wave Spectrum');
xlabel('Time Index');
ylabel('Frequency (Hz)');
axis xy; % 确保频率轴是从下到上增大

进一步分析与处理

这提供了绘制频谱的基础。如果需要进一步分析,可以根据具体需求进行处理,例如滤波、平滑等。

其他方向的频谱

可以使用相同的方法对 Y 方向 (A242_W) 和 Z 方向 (A243_W) 的数据进行处理和绘制频谱。

4.在 MATLAB 中展示 A243_W 数据集的结构

使用 h5info 函数查看数据集信息

使用 h5info 函数获取 A243_W 数据集的详细信息,包括其维度、数据类型、属性等。

filename = 'E:\Wechat-Downloads\WeChat Files\wxid_pc8ffp6vi93o22\FileStorage\File\2024-08\CSES_01_SCM_2_L02_A2_129161_20200531_232442_20200601_000017_000.h5';
info = h5info(filename, '/A243_W');
disp(info);

输出 

这将返回并显示 A243_W 数据集的所有相关信息,包括其大小、数据类型和相关属性。

disp(info);
      Filename: 'E:\Wechat-Downloads\WeChat Files\wxid_pc8ffp6vi93o22\FileStorage\File\2024-08\CSES_01_SCM_2_L02_A2_129161_20200531_232442_20200601_000017_000.h5'
          Name: 'A243_W'
      Datatype: [1×1 struct]
     Dataspace: [1×1 struct]
     ChunkSize: []
     FillValue: -99999
       Filters: []
    Attributes: [2×1 struct]

使用 h5read 函数读取数据集

如果想直接读取数据并查看部分数据,可以使用 h5read 函数:

A243_W = h5read(filename, '/A243_W');

% 显示数据集的大小
disp(size(A243_W));

% 显示数据集的前几行和列
disp(A243_W(1:10, 1:10));  % 显示前10行和前10列的数据

输出

-0.0026   -0.0061   -0.0012    0.0008    0.0041    0.0036    0.0003   -0.0020   -0.0036    0.0030
    0.0006   -0.0009    0.0031    0.0030    0.0024    0.0066    0.0017    0.0005   -0.0021    0.0057
   -0.0013   -0.0064    0.0001   -0.0009    0.0005    0.0039    0.0044    0.0034    0.0001    0.0015
   -0.0015   -0.0043    0.0001   -0.0000    0.0021    0.0025    0.0059    0.0013   -0.0010    0.0018
    0.0014   -0.0033    0.0001    0.0032    0.0049   -0.0019    0.0071   -0.0015   -0.0006    0.0019
    0.0012   -0.0013   -0.0001   -0.0018    0.0031   -0.0045    0.0044   -0.0021   -0.0021    0.0036
    0.0012   -0.0019   -0.0002   -0.0054    0.0035   -0.0033    0.0015    0.0001   -0.0017    0.0011
    0.0013   -0.0040   -0.0002   -0.0051    0.0016    0.0010    0.0039    0.0002   -0.0021    0.0061
    0.0001   -0.0037   -0.0002   -0.0012   -0.0006    0.0020    0.0012    0.0004   -0.0074    0.0032
    0.0011   -0.0051   -0.0000   -0.0028    0.0007    0.0014    0.0012    0.0008   -0.0026    0.0004

 查看数据集的属性

如果想查看数据集的属性,可以使用 h5readatt 函数来读取特定属性:

attrs = info.Attributes;
for i = 1:numel(attrs)
    attr_name = attrs(i).Name;
    attr_value = h5readatt(filename, '/A243_W', attr_name);
    disp([attr_name, ': ', num2str(attr_value)]);
end

输出

long_name: Z-Direction of ELF waveform 
Unit: nT 

可视化数据

如果想进一步分析或可视化数据,可以使用 MATLAB 的绘图函数,例如 imagescplot

% 可视化数据集的部分数据
imagesc(A243_W(1:1000, 1:1000));
colorbar;
title('A243_W Data Visualization');

输出

通过以上步骤,可以在 MATLAB 中详细查看和分析 A243_W 数据集的结构及其内容。

5.一个图像上画出 A243_W 数据集的 X, Y, Z 三分量图像

 读取 X, Y, Z 三分量数据

首先,分别读取 A241_W, A242_W, A243_W 三个数据集。

filename = 'E:\Wechat-Downloads\WeChat Files\wxid_pc8ffp6vi93o22\FileStorage\File\2024-08\CSES_01_SCM_2_L02_A2_129161_20200531_232442_20200601_000017_000.h5';

A241_W = h5read(filename, '/A241_W');  % X-Direction of ELF waveform
A242_W = h5read(filename, '/A242_W');  % Y-Direction of ELF waveform
A243_W = h5read(filename, '/A243_W');  % Z-Direction of ELF waveform

创建图像并绘制三分量

使用 MATLAB 的 subplot 函数在一个图像上显示三个分量。

% 假设你只绘制前1000个时间点的数据
figure;

subplot(3, 1, 1);
plot(A241_W(:, 1:1000)');
title('X-Direction of ELF waveform (A241_W)');
xlabel('Time Index');
ylabel('Amplitude (nT)');

subplot(3, 1, 2);
plot(A242_W(:, 1:1000)');
title('Y-Direction of ELF waveform (A242_W)');
xlabel('Time Index');
ylabel('Amplitude (nT)');

subplot(3, 1, 3);
plot(A243_W(:, 1:1000)');
title('Z-Direction of ELF waveform (A243_W)');
xlabel('Time Index');
ylabel('Amplitude (nT)');

% 设置整体标题
sgtitle('ELF Waveform Components (X, Y, Z)');

输出

x,y,z前5行5列数据结果 

disp(A241_W(1:5, 1:5)); % 检查 A241_W 的前5行5列数据
disp(A242_W(1:5, 1:5)); % 检查 A242_W 的前5行5列数据
disp(A243_W(1:5, 1:5)); % 检查 A243_W 的前5行5列数据

 输出

    0.0104    0.0055   -0.0058    0.0042    0.0009
    0.0072    0.0028   -0.0018    0.0069    0.0000
    0.0044    0.0040    0.0003    0.0028   -0.0008
    0.0053    0.0054    0.0000   -0.0001    0.0026
    0.0034    0.0001    0.0000   -0.0017    0.0004

    0.0016    0.0139    0.0019    0.0081   -0.0061
    0.0043    0.0106    0.0011    0.0097   -0.0032
    0.0027    0.0127    0.0004    0.0104   -0.0003
    0.0027    0.0099    0.0008    0.0147    0.0018
    0.0037    0.0096    0.0009    0.0156    0.0032

   -0.0026   -0.0061   -0.0012    0.0008    0.0041
    0.0006   -0.0009    0.0031    0.0030    0.0024
   -0.0013   -0.0064    0.0001   -0.0009    0.0005
   -0.0015   -0.0043    0.0001   -0.0000    0.0021
    0.0014   -0.0033    0.0001    0.0032    0.0049

 6.在一个图像上绘制 A243_W 的 x、y、z 三个分量的三维图像

步骤

  1. 读取数据并处理填充值:如果数据有填充值,可以先将其替换为 NaN。
  2. 选择一部分数据进行绘制:因为数据量可能很大,可以选择前 n 个时间点进行绘制。
  3. 使用 plot3 绘制三维图像
% 读取数据
A241_W = h5read(filename, '/A241_W');
A242_W = h5read(filename, '/A242_W');
A243_W = h5read(filename, '/A243_W');

% 替换填充值为 NaN
A241_W(A241_W == -99999) = NaN;
A242_W(A242_W == -99999) = NaN;
A243_W(A243_W == -99999) = NaN;

% 选择前1000个时间点的数据进行绘制
n = 1000;
x = A241_W(:, 1:n);
y = A242_W(:, 1:n);
z = A243_W(:, 1:n);

% 绘制三维图像
figure;
plot3(x(:), y(:), z(:));
grid on;
xlabel('X-Direction (nT)');
ylabel('Y-Direction (nT)');
zlabel('Z-Direction (nT)');
title('3D Plot of ELF Waveform Components (X, Y, Z)');

输出

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ensp 中 wlan 的配置过程和示例

一、拓朴: 要求:vlan20 用于笔记本上网,使用Huawei信号,vlan30 用于手机上网,使用 Huawei-5G 信号 二、配置过程: 1、SW1 基本配置: 起 vlan batch 10 20 30,10 为管理 vlan&#…

Acrobat Pro DC 2024 for mac/Win:跨平台PDF编辑与管理的巅峰之作

Adobe Acrobat Pro DC 2024是一款专为Mac和Windows用户设计的全面PDF解决方案软件,它集成了创建、编辑、转换、共享和签署PDF文件的强大功能,为用户带来前所未有的高效与便捷体验。 强大的PDF编辑功能 Acrobat Pro DC 2024在PDF编辑方面表现出色。用户…

JavaScript初级——DOM增删改

1、 document.createElement() —— 可以用于创建一个元素节点对象,他需要一个标签名作为参数,将会根据该标签名创建元素节点对象,并将创建好的对象作为返回值返回。 2、 document.createTextNode(&#…

职场达人必备!MyComputerManager助你轻松管理快捷方式

前言 你是否还在为硬盘管理界面上那一堆乱糟糟的快捷方式头疼不已?是不是每次打开‘此电脑’都像是在玩寻宝游戏,寻找那个被深埋的文件夹?想象一下,如果能在此电脑页面一键启动程序,是不是觉得整个人都轻松了许多&…

使用Tabs组件提升页面内容的聚焦与分类效率

当页面信息量较大时,为了提高用户的浏览效率,我们需要对页面内容进行有效的分类和展示。HarmonyOS提供的Tabs组件是一个理想的解决方案,可以在一个页面内快速切换视图内容,提升用户查找信息的效率,同时减少用户在单次操…

CSS定位与布局

一、display属性(元素如何显示) 网页上的每个元素都是一个​盒模型​。​display​属性决定了盒模型的​行为方式​,设置元素如何被显示。 display常用的属性共有​4个​值: ​display: none;​ -- 让标签消失(隐藏元素并脱离文档…

Mac M1Pro 安装Java性能监控工具VisualVM 2.1.9

本地已经安装了java8,在终端输入jvisualvm提示没有安装 zhiniansara ~ % jvisualvm The operation couldn’t be completed. Unable to locate a Java Runtime that supports jvisualvm. Please visit http://www.java.com for information on installing Java.官网…

Kafka事件(消息、数据)的存储

1、查看有关kafka日志配置文件的信息 2、查看kafka全部主题的日志文件 3、查看每个主题的日志文件 4、__consumer_offsets-xx文件夹的作用 package com.power;public class Test {public static void main(String[] args) {int partition Math.abs("myTopic".hashCo…

企业微信API对接文档【可向微信用户发消息】

目录 企业微信API对接文档 1.背景 2.获取微信第三方token 3.安装docker环境 4.打包与启动 4.1打包镜像 4.2启动容器(启动应用) 5.企业微信二维码验证 5.1 获取初始二维码 5.2 第1次二维码验证 5.3 第2次二维码验证 6. 企业微信三…

上博士为了毕业写学术论文头都大了,但更难受的是英语不咋地,投稿后经常会因为语言问题而惨遭拒稿,每每想起就令人心情郁郁,天台可期。

上博士为了毕业写学术论文头都大了,但更难受的是英语不咋地,投稿后经常会因为语言问题而惨遭拒稿,每每想起就令人心情郁郁,天台可期。有些审稿人也会直接告知需要专业的修改,那咋整呢,让润色呗,…

虚拟机virtualbox linux ubuntu使用usb串口

1.卸载brltty sudo apt remove brltty brltty是一个没啥用但是会抢占ch431的软件,所以卸载它 2.连接上串口,点击连接对应的usb串口 3.查看是否连接上 sudo dmesg -T | grep tty 查看tty组的最近日志,如果连接成功会显示连接的时间和串口…

基于数据挖掘的心力衰竭疾病风险评估系统

B站视频及代码下载:基于数据挖掘的心力衰竭疾病风险评估系统_哔哩哔哩_bilibili 1. 项目简介 心力衰竭是一种常见的心脏疾病,它严重影响患者的生活质量和预期寿命。早期识别和干预对于改善患者的预后至关重要。近年来,随着大数据技术和机器学…

eleme

设置主从从mysql57服务器 --配置主数据库 # systemctl stop firewalld # setenforce 0 # systemctl disable firewalld # ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz # cp -r mysql-5.7.44-linux-…

【题解】【循环】——[NOIP2010 普及组] 数字统计

【题解】【循环】——[NOIP2010 普及组] 数字统计 [NOIP2010 普及组] 数字统计题目描述输入格式输出格式输入输出样例输入 #1输出 #1输入 #2输出 #2 提示 1.题意解析2.AC代码 [NOIP2010 普及组] 数字统计 戳我查看题目(洛谷) 题目描述 请统计某个给定…

Spring cloud 网关信息

网关简绍 就是网络的关口&#xff0c;负责请求的路由、转发、身份校验。 引入网关依赖 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependenc…

html+css 实现爱心跳动

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 实现爱心跳动&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f49…

速通教程:如何使用Coze+剪映,捏一个爆款悟空视频

程哥最近做了一个和黑神话悟空有关的视频&#xff0c;没想到就火了&#xff0c;视频主打一个玉石风格&#xff0c;就是下面这个视频。 视频请移步飞书观看&#xff1a;黑神话悟空玉石版 制作过程不算很复杂&#xff0c;全程只需要用到Coze智能体和剪映这两个工具。 智能体用…

做个实验

做个实验 #include <bits/stdc.h> using namespace std; #define int long long #define ll __int128_t #define ar array<int, 2> #define arr array<int, 3> int n, m, k, inf 1LL << 61, mod 998244353;// 1e97; const int N 5e5 50;void sol…

存储架构模式之数据库存储架构

数据库读写分离 读写分离解决了读的问题。读被分离出去了&#xff0c;写性能的提升还是会有的。 数据库慢不需要直接上读写分离&#xff0c;先尝试优化索引&#xff0c;加入缓存等操作。 数据库读写分离复杂度分析 任务分解&#xff1a;读请求打到从机&#xff0c;写请求打到…

kafka发送消息-生产者发送消息的分区策略(消息发送到哪个分区中?是什么策略)

生产者发送消息的分区策略&#xff08;消息发送到哪个分区中&#xff1f;是什么策略&#xff09; 1、默认策略&#xff0c;程序自动计算并指定分区1.1、指定key&#xff0c;不指定分区1.2、不指定key&#xff0c;不指定分区 2、轮询分配策略RoundRobinPartitioner2.1、创建配置…