【数据分析day05】Scipy读/写.mat文件,wav,mp3

本文介绍了如何使用Scipy库进行.mat文件的读写操作,包括.wav音频文件的读取、拼接和写入,以及如何通过pydub处理.mp3文件,包括音频的裁剪和合并。详细讲解了每个步骤和关键函数的使用。
摘要由CSDN通过智能技术生成

  • 读取png文件命名为“moon”(df),降噪后处理成“moon_cleaned”(df),并将两个df数据存储到.mat文件中
  • mat :标准二进制文件
  • 常规图片读取用"plt.imread"
  • mat文件读取用 scipy.io 库的 .loadmat() 和.savemat()

moon (df)
在这里插入图片描述
降噪后的moon_cleaned (df)
在这里插入图片描述

导入: import scipy.io as spio

读写.mat 文件

写入 .savemat()

将上面两个df数据,存储到“moon_cleaned.mat”文件中,分布命名为{‘moon_cleaned’和’moon_origin’

import scipy.io as spio

spio.savemat('moon_cleaned.mat', mdict={'moon_cleaned': moon_cleaned,  'moon_origin': moon})

读取 .loadmat()

读取上面的“moon_cleaned.mat”文件

data = spio.loadmat('./moon_cleaned.mat')
data

在这里插入图片描述
可分别取df,这里取‘moon_origin’为例:

data['moon_origin']	

在这里插入图片描述

wav

在Qt中,可以使用Python的`scipy`模块生成.mat文件,然后使用Qt的`QFile`和`QDataStream`来取.mat文件。具体步骤如下: 1. 安装Python的`scipy`模块。在命令行中输入`pip install scipy`即可安装。 2. 在Python中生成.mat文件。假设生成了一个名为`data.mat`的文件。 3. 在Qt中打开.mat文件取数据。可以使用以下代码: ```cpp QFile file("path/to/data.mat"); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "Could not open file"; return; } QDataStream stream(&file); quint32 magicNumber; stream >> magicNumber; if (magicNumber != 0x4D414300) { qDebug() << "File is not a MATLAB file"; return; } quint16 version; stream >> version; if (version != 0x0100) { qDebug() << "Unsupported MATLAB version"; return; } quint32 endianIndicator; stream >> endianIndicator; if (endianIndicator != 0x494D5354) { qDebug() << "Unsupported byte order"; return; } quint32 headerSize; stream >> headerSize; stream.skipRawData(headerSize - 12); qint32 arrayFlags; stream >> arrayFlags; if (arrayFlags != 0x00000000) { qDebug() << "Unsupported array flags"; return; } qint32 dataType; stream >> dataType; if (dataType != 0x00000009) { qDebug() << "Unsupported data type"; return; } qint32 numDimensions; stream >> numDimensions; qint32 dimensions[10]; for (int i = 0; i < numDimensions; i++) { stream >> dimensions[i]; } qint32 nameLength; stream >> nameLength; stream.skipRawData(nameLength); qint32 dataSize; stream >> dataSize; QByteArray data(dataSize, '\0'); stream.readRawData(data.data(), dataSize); // The variable 'data' now contains the contents of the .mat file ``` 注意,这段代码只适用于特定的.mat文件格式,如果你使用了不同的数据类型、数组维度等,需要根据情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值