第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將帶有結(jié)構(gòu)的 .mat 文件提取到 Python 中

將帶有結(jié)構(gòu)的 .mat 文件提取到 Python 中

牛魔王的故事 2023-03-22 10:39:34
我是 python 的新手,在提取文件數(shù)據(jù)時(shí)遇到困難。所以我有一個(gè) .mat 文件,它在 Matlab 中有以下輸出:d= open('tesla.mat')d =帶字段的結(jié)構(gòu):diga: [1×1 struct]巨蟹座年 =帶字段的結(jié)構(gòu):       Programmdauer: [1×78 double]              SOCVec: [1×78 double]            Spannung: [1×78 double]         SpannungVec: [1×78 double]               Strom: [1×78 double]            StromVec: [1×78 double]       TemperaturVec: [1×78 double]   ThermischLeistung: [1×78 double]ThermischLeistungVec: [1×78 double]d.diga.data.電壓年 =第 1 至 20 列4.0544    4.2100    4.2133    4.2149    4.2159    4.2168    4.2175    4.2181    4.2186    4.2191    4.0332    4.0265    4.0247    4.0235    4.0227    4.0223    4.0219    4.0217    4.0215    4.0213第 21 至 40 列4.0211    4.0210    4.0208    4.0552    4.0559    4.0561    4.0563    4.0564    4.0564    4.0564    4.0564    4.0564    4.0564    4.0564    4.0563    4.0563    4.0563    4.0563    4.0563    4.0563第 41 至 60 列4.0562    4.0562    4.0562    4.0562    4.0562    4.0562    4.0561    4.0561    4.0561    4.0561    4.0561    4.0561    4.0561    4.0561    4.0561    4.0560    4.0560    4.0560    4.0560    4.0560第 61 至 78 列4.0560    4.0560    4.0560    4.0560    4.0560    4.0560    4.0559    4.0559    4.0559    4.0559    4.0559    4.0559    4.0559    4.0559    4.0559    4.0559    4.0559    4.0559我想在 python 中解析此數(shù)據(jù)并提取此特定變量,例如 Spannung 數(shù)據(jù)用 python 編寫提取特定數(shù)組數(shù)據(jù)的代碼是什么。
查看完整描述

2 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

好的,我添加了第二個(gè)答案,它有一個(gè)通用的小功能,可以提取內(nèi)部包含任何類型字段的數(shù)據(jù)墊文件,供將來可能需要它的人使用(甚至對(duì)我自己來說,我經(jīng)常處理這個(gè)問題,每次是時(shí)候構(gòu)建一個(gè)臨時(shí)解決方案了……)。


此函數(shù)應(yīng)該能夠接收任何包含結(jié)構(gòu)和嵌套結(jié)構(gòu)的 mat 文件,并返回一個(gè)字典:


import scipy.io as sio


def load_from_mat(filename=None, data={}, loaded=None):

    if filename:

        vrs = sio.whosmat(filename)

        name = vrs[0][0]

        loaded = sio.loadmat(filename,struct_as_record=True)

        loaded = loaded[name]

    whats_inside = loaded.dtype.fields

    fields = list(whats_inside.keys())

    for field in fields:

        if len(loaded[0,0][field].dtype) > 0: # it's a struct

            data[field] = {}

            data[field] = load_from_mat(data=data[field], loaded=loaded[0,0][field])

        else: # it's a variable

            data[field] = loaded[0,0][field]

    return data


# and then just call the function

my_file = r"C:\Users\.......\data.mat"

data = load_from_mat(filename=my_file) # Don't worry about the other input vars (data, loaded), there are used in the recursion.    



查看完整回答
反對(duì) 回復(fù) 2023-03-22
?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊

將 matlab 結(jié)構(gòu)加載到 python 中有點(diǎn)混亂,但 scipy.io.loadmat 方法可以通過一些探索來完成。

請(qǐng)參閱 scipy.io.loadmat 的幫助。他們解釋了它是如何工作的。

從加載文件開始:

import scipy.io as sio
my_struct = sio.loadmat(file_name)

然后,從字典中獲取數(shù)據(jù):

my_struct.keys() # this will show you the var name of your data, in your case diga (if I understand correctly)
data = my_struct["diga"]

現(xiàn)在,對(duì)于嵌套結(jié)構(gòu)的每個(gè)級(jí)別,您可以使用 .dtype 查看內(nèi)部的下一個(gè)結(jié)構(gòu),然后提取數(shù)據(jù):

data.dtype
data[0,0]["daten"]

進(jìn)而:

data[0,0,]["daten"][0,0]["Spannung"]

** 我可能漏掉了你結(jié)構(gòu)中的一個(gè)關(guān)卡,試一試看看它是否不完全適合你的結(jié)構(gòu)。


查看完整回答
反對(duì) 回復(fù) 2023-03-22
  • 2 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)