標籤:

matlab調用python整理(2):一些數據類型轉換

數據類型 - MATLAB & Simulink - MathWorks 中國可以查看官方文檔cn.mathworks.com/help/m

我目前試過的是 matlab向python傳參時,只能傳 行向量和數值,矩陣、列向量、稀疏矩陣不可以。

在python內進行計算後,將值返回到matlab時,向量是以py.array的形式返回,只能作為標量,不可以索引,但是官方文檔里有寫,一些類型可以支持強制轉換,比如直接轉為double類型,例如matlab裡面的a=[1,2,3,4]。

matlab代碼:

if count(py.sys.path,) == 0 insert(py.sys.path,int32(0),);endA=[1,2,3,4];b=[3,4,5,6];result=py.mytestfor.ttllee11(A,b)result1=double(result)

python代碼:mytestfor.py

import numpy as npdef ttllee11(A,b): xv=A+b return xv

運行結果如下

利用Python做了對A和b函數的拼接


另外,python有用到from numpy import *做矩陣計算,返回值不可強制類型轉換,使用了如下語句,將numpy類型的xdash轉換為double類型的data_x。

data_x = double(py.array.array(d,py.numpy.nditer(x_dash)))


此外,matlab稀疏矩陣的A_dash=sparse(i,j,data,N,N)可用如下語句做逆過程

[ i, j ] = find( A_dash ~= 0 );

data=nonzeros(A_dash);

N目前沒有找到方法,但是作為一個數值,可以在生成稀疏矩陣時候記錄下來,後面作為參數傳遞。

python的A_dash=csr_matrix((data, (i, j)), shape=(N, N))與sparse等效。

x=rand(16) %生成16*16的隨機矩陣

x=floor(unifrnd(1,9,25,25)) %生成25*25的隨機矩陣,矩陣內的值為1到9隨機。

推薦閱讀:

MATLAB 高級數據結構連載 6:使用containers.Map實時監控股票行情(2)
C++ 下有沒有矩陣計算速度能和 MATLAB 相當的矩陣或數學庫?
Matlab如何製作屬於自己的縮寫詞典
用matlab繪製電場線和等勢面如何做?
用自定義快捷鍵增強 MATLAB 編輯器功能

TAG:MATLAB |