最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python如何處理matlab的mat數(shù)據(jù)

 更新時間:2022年05月11日 10:11:02   作者:amcomputer  
這篇文章主要介紹了python如何處理matlab的mat數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

處理matlab的mat數(shù)據(jù)

python 和matlab是2個常用的實驗室平臺工具,在一些應(yīng)用下,這2個不同平臺下的數(shù)據(jù)會打交道,因此如何讀取和保存顯得尤為重要,這里需要用到python的第三方平臺下的scipy模塊。

先用下面這個命令檢查是否下載好scipy

import scipy

如果報錯,用python install scipy 或者 conda install scipy 下載安裝

需要用到scipy中的輸入輸出類中的loadmat 和savemat方法: 

import scipy.io as sio
?
sio.loadmat(file_name, mdict=None, appendmat=True, **kwargs)
sio.savemat(file_name, mdict, appendmat=True, format='5', long_field_names=False, do_compression=False, oned_as='row'

下面介紹一個簡單的錯誤例子:(需要傳字典格式的參數(shù))

import scipy.io as sio
import numpy as np
?
x = np.ones((3,3))
?
x
Out[86]:?
array([[1., 1., 1.],
? ? ? ?[1., 1., 1.],
? ? ? ?[1., 1., 1.]])
?
sio.savemat('f.mat',x)
Traceback (most recent call last):
?
? File "<ipython-input-87-d739bc03c885>", line 1, in <module>
? ? sio.savemat('f.mat',x)

下面介紹一個簡單的保存 導(dǎo)入例子:

import scipy.io as sio
import numpy as np
?
x = np.ones((3,3))
?
x
Out[86]:?
array([[1., 1., 1.],
? ? ? ?[1., 1., 1.],
? ? ? ?[1., 1., 1.]])
?
sio.savemat('f.mat',{"x":x})
?
?
?
myMat =sio.loadmat('f.mat')
?
print(myMat) #輸出為字典
{'__header__': b'MATLAB 5.0 MAT-file Platform: nt, Created on: Fri Aug 21 16:29:37 2020', '__version__': '1.0', '__globals__': [], 'x': array([[1., 1., 1.],
? ? ? ?[1., 1., 1.],
? ? ? ?[1., 1., 1.]])}
?
#以保存名為key,輸出list value
print(myMat['x'])
[[1. 1. 1.]
?[1. 1. 1.]
?[1. 1. 1.]]

如果想把python數(shù)據(jù)保存為mat數(shù)據(jù),則需要cell格式數(shù)據(jù),而python沒有實現(xiàn)cell,因此需要用到numpy模塊,可以看這篇博客。

處理matlab的*.mat格式數(shù)據(jù)及常見錯誤匯總

由于matlab和python兩種語言的編程方式不同,有時候在進行程序混編時,需要利用python調(diào)用matlab下的格式數(shù)據(jù),下面介紹如何調(diào)用mat格式數(shù)據(jù)及常見錯誤解決方法,僅供參考!

一、數(shù)據(jù)讀取錯誤

# 最初用loadmat讀取數(shù)據(jù)
import numpy as np
from scipy.io mport loadmat
img = loadmat('im.mat')['im']   #im.mat為mat數(shù)據(jù)的名稱,['im'] 中的im表示該文件下im的數(shù)據(jù)

使用如上代碼讀取數(shù)據(jù)時,會出現(xiàn)如下錯誤:

在這里插入圖片描述

如果出現(xiàn)以上錯誤,改用下面方式讀取,

import h5py
img = h5py.File('im.mat')['im']
img = h5py.File('im.mat','r')['im']    # 無警告

二、數(shù)據(jù)類型錯誤

(用Python處理圖像時,若涉及加減運算,溢出差值被重新賦值255-0)

# python代碼
import h5py
import numpy as np
img = h5py.File('im.mat')['im']
# python中的M,N剛剛好與matlab中的M,N取值相反,此處進行轉(zhuǎn)置與matlab相同矩陣格式進行處理
x = np.array(img).T  
[M, N] = x.shape
if M < 16 and N < 16:
    score = -2
# Feature Extraction:
# 1. horizontal features
d_h = x[:, 1:N] - x[:, 0:N - 1]   # 該步操作圖像產(chǎn)生滿溢,溢出后差值可能都被賦為255,依次遞減

此種情況下,d_h數(shù)據(jù)會出現(xiàn)滿溢情況,下面就是相同數(shù)據(jù)在python和matlab下面進行運算的差異性。

在這里插入圖片描述

% Matlab 代碼
img = laod('im.mat')
[M, N] = size(x)
if M < 16 | N < 16
    score = -2;
end   
x = double(img);  % 將無符號類型uint8數(shù)據(jù)類型轉(zhuǎn)換為double類型
% Feature Extraction:
% 1. horizontal features
d_h = x(:, 2:N) - x(:, 1:(N-1));

在這里插入圖片描述

原因: 導(dǎo)入數(shù)據(jù)類型為 uint8 數(shù)據(jù)格式,該種格式下是沒有負數(shù)的,在matlab中進行運算時,先將uint8數(shù)據(jù)類型轉(zhuǎn)化為了double類型,然后進行了減法運算,所以會出現(xiàn)如上結(jié)果,但是在python中,由于沒有double類型,所以需要自己手動設(shè)置數(shù)據(jù)格式類型,只需要改成不是uint8格式即可(具體格式需要根據(jù)需求,此處改成了int8格式類型)。解決方法非常簡單,只需在上面的一行代碼中加入數(shù)據(jù)類型即可:

x = np.array(img,dtype = 'int8').T   # 對讀取的uint8格式數(shù)據(jù)進行重新定義一下格式即可
x = np.array(img,dtype = 'float').T   # 下面這種格式雖然是浮點型,但是計算過程不容易出錯,如果是上面的int8會出現(xiàn)部分錯誤,需要注意

現(xiàn)在看一下結(jié)果,就跟matlab處理結(jié)果一樣了。

在這里插入圖片描述

雖然下面是浮點型,但是能夠保證數(shù)據(jù)轉(zhuǎn)化的精度和準(zhǔn)確性,img的影像數(shù)據(jù)轉(zhuǎn)化成數(shù)值時不出錯誤,非必要情況下,不要使用int8數(shù)據(jù)格式,因為使用int8格式數(shù)據(jù)類型,會在某些部分出錯,這一定要注意。(改組數(shù)據(jù)中(0,80)數(shù)值在int8格式轉(zhuǎn)化時出錯,原始數(shù)值為129,轉(zhuǎn)化之后變成127,而使用float格式則不會出現(xiàn)錯誤)

在這里插入圖片描述

原始數(shù)據(jù)unit8數(shù)據(jù)格式類型的數(shù)值為129,在python中不同格式類型的值就不一樣。

在這里插入圖片描述

所以uint8格式,在python運算中還是轉(zhuǎn)換成float格式靠譜,轉(zhuǎn)換成int8真的不行呀!

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • python中open函數(shù)的基本用法示例

    python中open函數(shù)的基本用法示例

    這篇文章主要給大家介紹了關(guān)于python中open函數(shù)的基本用法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 基于Python實現(xiàn)本地音樂播放器的制作

    基于Python實現(xiàn)本地音樂播放器的制作

    這篇文章主要介紹了如何利用Python實現(xiàn)本地音樂播放器的制作,并且可以選擇需要播放的音樂的路徑,選擇播放方式,感興趣的小伙伴可以了解一下
    2022-06-06
  • Python比較2個時間大小的實現(xiàn)方法

    Python比較2個時間大小的實現(xiàn)方法

    下面小編就為大家分享一篇Python比較2個時間大小的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python裝飾器深入學(xué)習(xí)

    python裝飾器深入學(xué)習(xí)

    這篇文章主要深入學(xué)習(xí)了python裝飾器的相關(guān)資料,什么是裝飾器?裝飾器遵循的原則等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python編程進階代碼邏輯分離指南

    Python編程進階代碼邏輯分離指南

    在?Python?編程中,適當(dāng)?shù)拇a邏輯分離可以幫助降低復(fù)雜度、提高可讀性,減少大量的?if-else?結(jié)構(gòu),本文將深入探討如何使用不同方法來改進代碼結(jié)構(gòu),降低對?if-else?結(jié)構(gòu)的依賴
    2023-12-12
  • 解決Python計算矩陣乘向量,矩陣乘實數(shù)的一些小錯誤

    解決Python計算矩陣乘向量,矩陣乘實數(shù)的一些小錯誤

    今天小編就為大家分享一篇解決Python計算矩陣乘向量,矩陣乘實數(shù)的一些小錯誤,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 使用python繪制二維圖形示例

    使用python繪制二維圖形示例

    今天小編就為大家分享一篇使用python繪制二維圖形示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • pymssql ntext字段調(diào)用問題解決方法

    pymssql ntext字段調(diào)用問題解決方法

    pymssql是python用來連接mssql數(shù)據(jù)庫的一個類庫。該庫遵守Python DB API 2.0 標(biāo)準(zhǔn),并且還附帶了一個原生的低階數(shù)據(jù)訪問模塊。
    2008-12-12
  • Django使用Celery異步任務(wù)隊列的使用

    Django使用Celery異步任務(wù)隊列的使用

    這篇文章主要介紹了Django使用Celery異步任務(wù)隊列的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • python列表與元組詳解實例

    python列表與元組詳解實例

    python列表與元組詳解實例,本文是基于python2.x的講解,這點一定要注意。
    2013-11-11

最新評論

井陉县| 桃园市| 上栗县| 汉中市| 桑植县| 米脂县| 肇东市| 孙吴县| 刚察县| 马尔康县| 罗甸县| 宿松县| 岱山县| 清徐县| 安仁县| 杂多县| 六盘水市| 寿宁县| 荣昌县| 偃师市| 泸水县| 和平区| 林周县| 始兴县| 南昌市| 西城区| 柳林县| 山丹县| 永胜县| 沾益县| 大埔县| 南雄市| 长海县| 临江市| 东乡族自治县| 郸城县| 漳浦县| 安新县| 新田县| 台湾省| 津市市|