MATLAB 数组作为 Python 变量
目錄
在 Python 中創(chuàng)建 MATLAB 數(shù)組
Python?中的?MATLAB?數(shù)組屬性和方法
Python?中的多維?MATLAB?數(shù)組
在?Python?中對(duì)?MATLAB?數(shù)組進(jìn)行索引
在?Python?中對(duì)?MATLAB?數(shù)組進(jìn)行切片
在?Python?中重構(gòu)?MATLAB?數(shù)組
????????matlab Python? 包提供數(shù)組類(lèi)以將 MATLAB? 數(shù)值類(lèi)型的數(shù)組表示為 Python 變量,以便 MATLAB 數(shù)組可以在 Python 和 MATLAB 之間傳遞。
在 Python 中創(chuàng)建 MATLAB 數(shù)組
????????可以通過(guò)從 matlab Python 包中調(diào)用構(gòu)造函數(shù)(例如 matlab.double、matlab.int32)在 Python 會(huì)話中創(chuàng)建 MATLAB 數(shù)值數(shù)組。構(gòu)造函數(shù)的名稱(chēng)表示 MATLAB 數(shù)值類(lèi)型。
????????可以在 Python 中使用自定義類(lèi)型初始化 MATLAB 雙精度數(shù)組。要使用該自定義類(lèi)型進(jìn)行初始化,它必須繼承自 Python 抽象基類(lèi) collections.Sequence。
????????可以將 MATLAB 數(shù)組作為輸入?yún)?shù)傳遞給由用于 Python 的 MATLAB 引擎 API 調(diào)用的函數(shù)。當(dāng) MATLAB 函數(shù)將數(shù)值數(shù)組作為輸出參數(shù)返回時(shí),引擎會(huì)將該數(shù)組返回到 Python。
????????可以使用包含數(shù)字的可選 initializer 輸入?yún)?shù)初始化數(shù)組。initializer 必須是 Python 序列類(lèi)型,例如 list、tuple 或其他序列類(lèi)型。可選的 size 輸入?yún)?shù)根據(jù)序列來(lái)設(shè)置數(shù)組大小。
????????可以通過(guò)指定 initializer 包含多個(gè)數(shù)字序列或通過(guò)指定 size 為多維來(lái)創(chuàng)建多維數(shù)組。通過(guò)將可選的 is_complex 輸入?yún)?shù)設(shè)置為 True,可以創(chuàng)建復(fù)數(shù) MATLAB 數(shù)組。matlab 包提供了下表中列出的 MATLAB 數(shù)組構(gòu)造函數(shù)。
| matlab.double | matlab.double(initializer=None, size=None, is_complex=False) |
| matlab.single | matlab.single(initializer=None, size=None, is_complex=False) |
| matlab.int8 | matlab.int8(initializer=None, size=None, is_complex=False) |
| matlab.int16 | matlab.int16(initializer=None, size=None, is_complex=False) |
| matlab.int32 | matlab.int32(initializer=None, size=None, is_complex=False) |
| matlab.int64[a] | matlab.int64(initializer=None, size=None, is_complex=False) |
| matlab.uint8 | matlab.uint8(initializer=None, size=None, is_complex=False) |
| matlab.uint16 | matlab.uint16(initializer=None, size=None, is_complex=False) |
| matlab.uint32 | matlab.uint32(initializer=None, size=None, is_complex=False) |
| matlab.uint64[b] | matlab.uint64(initializer=None, size=None, is_complex=False) |
| matlab.logical | matlab.logical(initializer=None, size=None)[c] |
| matlab.object | 沒(méi)有構(gòu)造函數(shù)。當(dāng)函數(shù)返回的是 MATLAB 對(duì)象的句柄或值對(duì)象時(shí),引擎會(huì)將 matlab.object 返回給 Python。 |
| [a]?In Python 2.7 on Windows,?matlab.int64?is converted to?int32?in MATLAB. Also, MATLAB cannot return an?int64?array to Python. [b]?In Python 2.7 on Windows,?matlab.uint64?is converted to?uint32?in MATLAB. Also, MATLAB cannot return a?uint64?array to Python. [c]?Logicals cannot be made into an array of complex numbers. | |
????????當(dāng)創(chuàng)建具有 N 個(gè)元素的數(shù)組時(shí),數(shù)組大小為 1×N,因?yàn)樗?MATLAB 數(shù)組。
import matlab.engine A = matlab.int8([1,2,3,4,5]) print(A.size)(1, 5)????????使用包含五個(gè)數(shù)字的 Python list 進(jìn)行初始化。MATLAB 數(shù)組大小為 1×5,由 tuple (1,5) 指示。
Python?中的?MATLAB?數(shù)組屬性和方法
????????所有使用 matlab 包構(gòu)造函數(shù)創(chuàng)建的 MATLAB 數(shù)組都具有下表中列出的屬性和方法。
| size | 數(shù)組大小返回為 tuple |
| reshape(size) | 按照序列 size 的指定重構(gòu)數(shù)組 |
Python?中的多維?MATLAB?數(shù)組
????????在 Python 中,可以創(chuàng)建任何數(shù)值類(lèi)型的多維 MATLAB 數(shù)組。使用兩個(gè) Python list 變量創(chuàng)建一個(gè) 2×5 MATLAB 雙精度數(shù)組。
import matlab.engine A = matlab.double([[1,2,3,4,5], [6,7,8,9,10]]) print(A)[[1.0,2.0,3.0,4.0,5.0],[6.0,7.0,8.0,9.0,10.0]]????????A 的 size 屬性顯示它是 2×5 數(shù)組。
print(A.size)(2, 5)在?Python?中對(duì)?MATLAB?數(shù)組進(jìn)行索引
????????就像可以對(duì) Python list 和 tuple 變量進(jìn)行索引一樣,也可以對(duì) MATLAB 數(shù)組進(jìn)行索引。
import matlab.engine A = matlab.int8([1,2,3,4,5]) print(A[0])[1,2,3,4,5]????????MATLAB 數(shù)組的大小為 (1,5);因此,A[0] 是 [1,2,3,4,5]。對(duì)該數(shù)組進(jìn)行索引會(huì)得到 3。
print(A[0][2])3????????Python 索引是從 0 開(kāi)始的。當(dāng)在 Python 會(huì)話中訪問(wèn) MATLAB 數(shù)組的元素時(shí),請(qǐng)使用從 0 開(kāi)始的索引。
????????對(duì)多維 MATLAB 數(shù)組進(jìn)行索引。
A = matlab.double([[1,2,3,4,5], [6,7,8,9,10]]) print(A[1][2])8.0在?Python?中對(duì)?MATLAB?數(shù)組進(jìn)行切片
????????可以像對(duì) Python list 和 tuple 變量進(jìn)行切片一樣,對(duì) MATLAB 數(shù)組進(jìn)行切片。
import matlab.engine A = matlab.int8([1,2,3,4,5]) print(A[0][1:4])[2,3,4]????????可以將數(shù)據(jù)分配到一個(gè)切片。以下代碼顯示從 Python list 到一個(gè)數(shù)組切片的分配。
A = matlab.double([[1,2,3,4],[5,6,7,8]]); A[0] = [10,20,30,40] print(A)[[10.0,20.0,30.0,40.0],[5.0,6.0,7.0,8.0]]????????可以分配來(lái)自另一個(gè) MATLAB 數(shù)組或來(lái)自包含數(shù)字的任何 Python 可迭代對(duì)象的數(shù)據(jù)。
????????可以為分配指定切片,如下所示。
A = matlab.int8([1,2,3,4,5,6,7,8]); A[0][2:4] = [30,40] A[0][6:8] = [70,80] print(A)[[1,2,30,40,5,6,70,80]]注意:
????????對(duì) MATLAB 數(shù)組進(jìn)行切片與對(duì) Python?list?進(jìn)行切片在行為上有所不同。對(duì) MATLAB 數(shù)組進(jìn)行切片將返回視圖而不是淺拷貝。
????????假定 MATLAB 數(shù)組和 Python?list?具有相同的值,分配切片也會(huì)產(chǎn)生不同結(jié)果,如以下代碼所示。
A = matlab.int32([[1,2],[3,4],[5,6]]) L = [[1,2],[3,4],[5,6]] A[0] = A[0][::-1] L[0] = L[0][::-1] print(A)[[2,2],[3,4],[5,6]]print(L)[[2, 1], [3, 4], [5, 6]]在?Python?中重構(gòu)?MATLAB?數(shù)組
????????可以使用 reshape 方法在 Python 中重構(gòu) MATLAB 數(shù)組。輸入?yún)?shù) size 必須是保留元素?cái)?shù)量的一個(gè)序列。使用 reshape 將 1×9 MATLAB 數(shù)組更改為 3×3。
import matlab.engine A = matlab.int8([1,2,3,4,5,6,7,8,9]) A.reshape((3,3)) print(A)[[1,4,7],[2,5,8],[3,6,9]]總結(jié)
以上是生活随笔為你收集整理的MATLAB 数组作为 Python 变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Turbo PMAC控制卡步进电机控制
- 下一篇: websocket python爬虫_p