導航:首頁 > 編程語言 > python中的mat函數

python中的mat函數

發布時間:2022-07-20 03:44:46

1. 如何讀取mat文件 python

一、mat文件

mat數據格式是Matlab的數據存儲的標准格式。在Matlab中主要使用load()函數導入一個mat文件,使用save()函數保存一個mat文件。對於文件

二、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']})

2. 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 Data=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

3. 在python函數里,不用return,怎麼把值送出來

題主好. 如果不用 return, 我們可以選擇利用傳遞參數的引用來『把值送出來』, 但這樣只能針對不變對象, 如字典, 列表, numpy 數組等等. 例如我們可以用如下代碼修改 numpy 數組:

mat = numpy.zeros((3,3))

compute_matrix( mat )

我們可以定義函數 compute_matrix 來修改參數 mat 的值, 並在這個函數結束後返回, 可以不用 return.


附錄:

python 參數傳遞 (傳值或傳引用). 這篇博文將 python 中參數傳遞的情況, 什麼時候傳值什麼時候傳引用, 解釋地很清楚, 具體地:

4. python里x=randn mat=x.T.dot 是求什麼

x=randn這個寫法是不對的,randn是numpy里的一個生成隨機array的函數。

比如說要生成一個三行兩列的隨機array,可以這樣寫:

import numpy

x = numpy.random.randn(3,2)

像這樣:

dot(2)是點乘常數就不說了,

那個x.T.dot([1,2,3])就是x.T的

1*1+2*2+3*3=14

2*1+3*2+4*3=20

5. 怎麼在python中讀寫和存儲matlab的數據文件(*mat)

以前也有一些開源的庫(pymat和pymat2等)來做這個事,
不過自從有了numpy和scipy以後,這些庫都被拋棄了.
下面是一個簡單的測試程序,具體的函數用法可以看幫助文檔:
import scipy.io as sio
import matplotlib.pyplot as plt
import numpy as np
#matlab文件名

6. format在python中的用法

fotmat作為Python的的格式字元串函數,主要通過字元串中的花括弧{},來識別替換欄位,從而完成字元串的格式化。format是python2.6新增的一個格式化字元串的方法,相對於老版的%格式方法,它有很多優點。單個參數可以多次輸出,參數順序可以不相同。

python中的format函數用法

基本語法是通過{}和:來代替以前的%

1、例如輸出保留兩位的數字:print("{:.2f}".format(3.1456879)),且會四捨五入。

2、大括弧里可以填索引,以此來保證後續format中參數的順序位置,例如:

print("{2}{0}{1}".format("are","you","How"))

輸出為Howareyou,注意索引應從0開始。

而且需要注意的是如果未填索引,那麼會默認按format中參數順序位置填充,此時大括弧佔位數要與format參數相等。如果填充索引,索引數需要不大於format索引數。

3、如果是雙層大括弧結構,則認為第二層大括弧為普通字元串,不會進行格式化。例如:

print("{}對應的位置是{{普通字元串}}".format("字元串"))

輸出為:字元串對應的位置是{普通字元串},注意加粗部分,第二層大括弧會作為普通的字元串,不會進行格式化。

7. 用python怎麼讀取mat文件的三維矩陣

8. python里x=randn mat=x.T.dot 是求什麼

x=randn這個寫法是不對的。

randn是numpy里的一個生成隨機array的函數。

比如說要生成一個三行兩列的隨機array,可以這樣寫:


import numpy

x = numpy.random.randn(3,2)

像這樣:

dot(2)是點乘常數就不說了,

那個x.T.dot([1,2,3])就是x.T的

1*1+2*2+3*3=14

2*1+3*2+4*3=20


懂了木有 =。=

9. python中.mat文件怎麼讀取

python中讀取mat文件
在python中可以使用scipy.io中的函數loadmat()讀取mat文件,函數savemat保存文件。
1、讀取文件
如上例:

1234567

#coding:UTF-8 import scipy.io as scio dataFile = 'E://data.mat'data = scio.loadmat(dataFile)

注意,讀取出來的data是字典格式,可以通過函數type(data)查看。

1

print type(data)

結果顯示

1

<type 'dict'>

找到mat文件中的矩陣:

1

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中的矩陣格式。

10. python怎麼實現矩陣的除法

1、首先打開pycharm軟體,新建一個python文件並導入numpy庫。

閱讀全文

與python中的mat函數相關的資料

熱點內容
腰椎壓縮性骨折吧 瀏覽:324
安卓怎麼把軟體改成火影忍者 瀏覽:702
手機如何切換軟體商店伺服器 瀏覽:325
江蘇省python二級題型 瀏覽:231
文件編譯器在哪 瀏覽:26
選擇目錄時此電腦的文件夾怎麼刪 瀏覽:25
狗狗幣加密支付服務 瀏覽:897
怎麼使用指南針APP確定方向 瀏覽:372
php讀取圖片並輸出 瀏覽:321
如何組合多個pdf文件 瀏覽:669
工作表格excel取消加密 瀏覽:133
真空壓縮袋手泵怎麼用 瀏覽:426
鏡面的命令 瀏覽:203
51單片機藍牙模塊有延遲 瀏覽:115
b解壓葯 瀏覽:569
跳空缺口指標源碼怎麼寫 瀏覽:701
怎麼殺掉伺服器上所有進程 瀏覽:180
c語言中水仙花數的演算法分析 瀏覽:495
心煩時玩兒的解壓神器 瀏覽:497
linux安裝的庫文件 瀏覽:920