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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python3.x 中調(diào)用 Matlab .m 文件后如何解決

在 Python3.x 中調(diào)用 Matlab .m 文件后如何解決

森林海 2021-07-29 18:41:22
我想在 Python 中調(diào)用 Matlab .m 文件和函數(shù),但是由于 Matlab 和 Python 之間的數(shù)據(jù)類型不同,出現(xiàn)了關(guān)于 .m 文件的錯誤TypeError: unsupported Python data type: numpy.ndarray。作為以下代碼中的示例VoxelSizeUnification,我想在 Python 中調(diào)用它的 Matlab 函數(shù),其輸入來自 Python 數(shù)據(jù)類型:import matlab.engineeng = matlab.engine.start_matlab()xyzSpacing = [dcm_image.SliceThickness, dcm_image.PixelSpacing[1], dcm_image.PixelSpacing[0]]xyzNewSpacing = [1.25, 1.25, 1.25]eng.VoxelSizeUnification(volume_image, xyzNewSpacing, xyzSpacing)  # TypeError: unsupported Python data type: numpy.ndarray那:volume_image is {ndarray} and includes images as: volume_image[number of slices in 3rd dimenson = 133, rows=512, columns=512].xyzNewSpacing and xyzSpacing are <class 'list'> with size of (1 x 3)此外,我使用link1 進(jìn)行搜索,但我不想保存文件然后加載它們。同樣在link2 中,mlab 應(yīng)該使用 python>=2.7 并且我的 Python 是 3.6.6 和 Matlab 2017b。另外,我已經(jīng)matlab.double用一個例子嘗試并測試了上面的代碼,沒有任何錯誤:xyzNewSpacing = matlab.double([1.25, 1.25, 1.25])xyzSpacing = matlab.double([1.5, 1.5, 1.5])vol = matlab.double([[[1, 2, 1], [3, 1, 5], [2, 1, 2]],                     [[2, 3, 1], [1, 2, 3], [2, 1, 3]],                     [[4, 2, 1], [2, 3, 1], [3, 2, 1]]])ret = eng.VoxelSizeUnification(vol, xyzNewSpacing, xyzSpacing)但是,對于volume_image這是圖像的3D陣列,收到錯誤約:ValueError: initializer must be a rectangular nested sequence。Python:xyzNewSpacing = matlab.double([1.25, 1.25, 1.25])xyzSpacing = matlab.double([1.5, 1.5, 1.5])d = matlab.double(volume_image) # ValueError: initializer must be a rectangular nested sequenceret = eng.VoxelSizeUnification(d, xyzSpacing, xyzNewSpacing)MATLAB:function outputSize = VoxelSizeUnification(d, xyzSpacing, xyzNewSpacing)         outputSize = [ceil((d(1)*xyzSpacing(1))/xyzNewSpacing(1))...                      ceil((d(2)*xyzSpacing(2))/xyzNewSpacing(2))...                       ceil((d(3)*xyzSpacing(3))/xyzNewSpacing(3))];end的原因是ValueError: initializer must be a rectangular nested sequence什么?謝謝。
查看完整描述

2 回答

?
30秒到達(dá)戰(zhàn)場

TA貢獻(xiàn)1828條經(jīng)驗 獲得超6個贊

錯誤是因為datatypes使用volume_image = volume_image.tolist()錯誤已解決。然而,它花費了大量的運行時間。所以,如果每個人都有好主意,請分享它。


查看完整回答
反對 回復(fù) 2021-08-03
  • 2 回答
  • 0 關(guān)注
  • 420 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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