我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

mat函数python mat函数递归调用

如何读取mat文件 python

一、mat文件

成都创新互联是一家集网站建设,醴陵企业网站建设,醴陵品牌网站建设,网站定制,醴陵网站建设报价,网络营销,网络优化,醴陵网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

mat数据格式是Matlab的数据存储的标准格式。在Matlab中主要使用load()函数导入一个mat文件,使用save()函数保存一个mat文件。对于文件

load('data.mat')

save('data_1.mat','A')

其中,'A'表示要保存的内容。

二、python中读取mat文件

在python中可以使用scipy.io中的函数loadmat()读取mat文件,函数savemat保存文件。

1、读取文件

如上例:

#coding:UTF-8

import scipy.io as scio

dataFile = 'E://data.mat'

data = scio.loadmat(dataFile)

注意,读取出来的data是字典格式,可以通过函数type(data)查看。

print type(data)

结果显示

type 'dict'

找到mat文件中的矩阵:

print data['A']

结果显示

[[ 0.          0.          0.          0.          0.          0.          0.

0.          0.          0.          0.          0.          0.          0.

。。。。。。。。。。。

0.          0.          0.          0.          0.          0.          0.

0.36470588  0.90196078  0.99215686  0.99607843  0.99215686  0.99215686

0.78431373  0.0627451   0.          0.          0.          0.          0.

0.          0.          0.          0.          0.          0.          0.

。。。。。。。。。。。。

0.94117647  0.22745098  0.          0.          0.          0.          0.

0.          0.          0.          0.          0.          0.          0.

0.          0.          0.          0.          0.          0.          0.

0.          0.          0.          0.          0.          0.30196078

。。。。。。。

0.          0.          0.          0.          0.          0.          0.

0.          0.          0.          0.          0.          0.          0.        ]]

格式为:

type 'numpy.ndarray'

即为numpy中的矩阵格式。

2、保存文件

将这里的data['A']矩阵重新保存到一个新的文件dataNew.mat中:

dataNew = 'E://dataNew.mat'

scio.savemat(dataNew, {'A':data['A']})

如何在python中读写和存储matlab的数据文件

使用sicpy.io即可.sicpy.io提供了两个函数loadmat和savemat,非常方便.

以前也有一些开源的库(pymat和pymat2等)来做这个事,

不过自从有了numpy和scipy以后,这些库都被抛弃了.

下面是一个简单的测试程序,具体的函数用法可以看帮助文档:

[python] view plaincopy在CODE上查看代码片派生到我的代码片

import scipy.io as sio

import matplotlib.pyplot as plt

import numpy as np

#matlab文件名

matfn=u'E:/python/测试程序/162250671_162251656_1244.mat'

data=sio.loadmat(matfn)

plt.close('all')

xi=data['xi']

yi=data['yi']

ui=data['ui']

vi=data['vi']

plt.figure(1)

plt.quiver( xi[::5,::5],yi[::5,::5],ui[::5,::5],vi[::5,::5])

plt.figure(2)

plt.contourf(xi,yi,ui)

plt.show()

sio.savemat('saveddata.mat', {'xi': xi,'yi': yi,'ui': ui,'vi': vi})

python读取mat(v7.3)文件中的cell以及struct

"""

Created on Sun Nov 29 16:40:18 2020

本工具主要用于mat文件的读取(matlab-v7.3格式)

主要分为3个部分:1 常规mat中的变量

            2 mat文件中的cell内部数据读取

            3 mat文件中的struct数据读取

@author: ZXY

"""

"""

1 常规mat中的变量

"""

import h5py

b=[]

#首先用h5py读取mat文件,并找到对应的struct 位置。

data = h5py.File("./1.mat",'r')

ecg=data["ecg"].value

"""

2 mat文件中的cell内部数据读取

"""

import h5py

b=[]

#首先用h5py读取mat文件,并找到对应的struct 位置。

data = h5py.File("./2.mat",'r')

zx1=data["ecg_all"]#找到struct的顶部

for i in range(zx1.shape[0]):

ecg=data[zx1[i][0]].value

"""

3 mat文件中的struct数据读取

"""

import h5py

b=[]

#首先用h5py读取mat文件,并找到对应的struct 位置。

data = h5py.File("./3.mat",'r')

zx1=data["ecgpart"]#找到struct的顶部

test = data['ecgpart/data']#找到struct中要提取的子集

for i in test[:,0]: 

    ecg=zx1[i].value

python opencv 表示mat类型吗

、Mat类型:矩阵类型Matrix

openCVMat维密集数据数组用处理向量矩阵、图像、直图等等见维数据

Mat3重要:

1、Mat mat = imread(const String* filename); 读取图像

2、imshow(const string frameName, InputArray mat); 显示图像

3、imwrite (const string filename, InputArray img); 储存图像

Mat类型较CvMat与IplImage类型说更强矩阵运算能力支持见矩阵运算计算密集型应用CvMat与IplImage类型转化Mat类型减少计算间花费

A.Mat - IplImage

同创建图像没复制数据

例: // 假设Mat类型imgMat图像数据存

IplImage pImg= IplImage(imgMat);

B.Mat - CvMat

与IplImage转换类似复制数据创建矩阵

例: // 假设Mat类型imgMat图像数据存

CvMat cvMat = imgMat;

二、CvMat类型与IplImage类型:图像类型

openCVMat类型与CvMatIplImage类型都代表显示图像Mat类型侧重于计算数性较高openCVMat类型计算进行优化CvMatIplImage类型更侧重于图像openCV其图像操作(缩放、单通道提取、图像阈值操作等)进行优化

补充:IplImage由CvMat派CvMat由CvArr派即CvArr - CvMat - IplImage

CvArr用作函数参数论传入CvMat或IplImage内部都按CvMat处理

1.CvMat

A.CvMat- IplImage

IplImage* img = cvCreateImage(cvGetSize(mat),8,1);

cvGetImage(matI,img);

cvSaveImage("rice1.bmp",img);

B.CvMat-Mat

与IplImage转换类似选择否复制数据

Mat::Mat(const CvMat* m, bool copyData=false);

openCV没向量(vector)数据结构任何候我要表示向量用矩阵数据表示即

CvMat类型与我线性代数课程向量概念相比更抽象比CvMat元素数据类型并仅限于基础数据类型比面创建二维数据矩阵:

CvMat* cvCreatMat(int rows ,int cols , int type);

type任意预定义数据类型比RGB或者别通道数据我便CvMat矩阵表示丰富彩图像

2.IplImage

类型关系我说IplImage类型继承自CvMat类型包括其变量解析图像数据

IplImage类型较CvMat参数比depthnChannels普通矩阵类型通深度通道数同表示用32位表示RGB+Alpha.图像处理我往往深度与通道数处理做OpenCV图像表示种优化案

IplImage图像另种优化变量origin----原点计算机视觉处理重要便原点定义清楚图像源编码格式甚至操作系统都原选取产影响弥补点openCV允许用户定义自原点设置取值0表示原点位于图片左角1表示左角

dataOrder参数定义数据格式IPL_DATA_ORDER_PIXELIPL_DATA_ORDER_PLANE两种取值前者便于像素同通道数据交叉排列者表示所通道按顺序平行排列

IplImage类型所额外变量都图像表示与计算能力优化

A.IplImage - Mat

IplImage* pImg = cvLoadImage("lena.jpg");

Mat img(pImg,0); // 0复制影像pImg与imgdata共用同记忆体位置header各自

B.IplImage - CvMat

1:CvMat mathdr, *mat = cvGetMat( img, mathdr );

2:CvMat *mat = cvCreateMat( img-height, img-width, CV_64FC3 );

cvConvert( img, mat );

C.IplImage*- BYTE*

BYTE* data= img-imageData;

CvMatIplImage创建区别:

1、建立矩阵第参数行数第二参数列数

CvMat* cvCreateMat( int rows, int cols, int type );

2、建立图像CvSize第参数宽度即列数;第二参数高度即行数 CvMat矩阵相反

IplImage* cvCreateImage(CvSize size, int depth, int channels );

CvSize cvSize( int width, int height );

IplImage内部buffer每行按4字节齐CvMat没限制

补充:

A.BYTE*- IplImage*

img= cvCreateImageHeader(cvSize(width,height),depth,channels);

cvSetData(img,data,step);

//首先由cvCreateImageHeader()创建IplImage图像制定图像尺寸深度通道数;

//由cvSetData()根据BYTE*图像数据指针设置IplImage图像数据数据

//其step指定该IplImage图像每行占字节数于1通道IPL_DEPTH_8U图像step等于width


分享名称:mat函数python mat函数递归调用
标题来源:http://mswzjz.cn/article/hhsgid.html

其他资讯