主要内容

排序和情节MATLAB数据从Python

这个例子展示了如何将患者数据分类整理吸烟者和不吸烟者在Python列表®和情节MATLAB患者血压读数®

启动引擎,并读取数据的一组病人到MATLAB表中。MATLAB提供了一个用逗号分隔的文件样本,patients.dat信息,其中包含100个不同的病人。

导入matlab。eng引擎eng = matlab.engine.start_matlab ()。eval (T = readtable (patients.dat);“, nargout = 0)

MATLABreadtable函数中读取数据到一个表中。MATLAB引擎不支持表数据类型。万博1manbetx然而,与MATLABtable2struct可以将表转换为一个标量函数结构,这是一个数据类型的引擎不支持。万博1manbetx

eng。eval (“S = table2struct (T, ToScalar,真的);“,nargout = 0) eng.eval (“disp (S)”, nargout = 0)
姓:{100}x1细胞性别:{100}x1细胞年龄:[100 x1双)地点:{100}x1细胞高度:[100 x1双)重量:[100 x1双]吸烟者:[100 x1双]收缩压:[100 x1双]舒张:x1双[100]SelfAssessedHealthStatus: {100 x1电池}

你可以通过年代从MATLAB工作区到您的Python会话。引擎转换年代Python字典,D

D = eng.workspace (“S”)

年代字段包含数组。引擎将细胞数组转换为Python列表MATLAB数组变量和数值型数组。因此,D(“姓”)的数据类型列表,D(“时代”)的数据类型matlab.double

这种血压读数为吸烟者和非吸烟者的列表。在patients.dat,列吸烟者表示一个吸烟者与逻辑1(真),和一个不抽烟的人与一个逻辑0(假)。转换D(“烟民”)到一个matlab.logical数组进行排序。

吸烟者= matlab.logical (D(“烟民”))

转换舒张压血压和吸烟者指标为1 -到- 100 MATLAB数组进行排序。

压力= D(“舒张期”)pressure.reshape((1100)) =压[0]smoker.reshape((1100))吸烟者=吸烟者[0]

排序压力数组列表的吸烟者和非吸烟者的血压读数。Python列表理解提供了一个紧凑的方法遍历序列。与Python邮政编码功能,可以遍历多个序列在一个循环。

sp = [p (p, s)在zip(压力,吸烟者)如果年代是真的]nsp = [p (p, s)在zip(压力,吸烟者)如果年代是假的)

显示的长度sp,吸烟者的血压读数列表

打印(len (sp))
34

显示的长度规划的,列表不吸烟者的读数。

print (len (nsp))
66年

计算吸烟者和非吸烟者的平均血压读数。转换sp规划的MATLAB数组之前通过MATLAB的意思是函数。

sp = matlab.double (sp) nsp = matlab.double (nsp)打印(eng.mean (sp))
89.9117647059

显示为不吸烟者的平均血压。

print (eng.mean (nsp))
79.3787878788

血压对吸烟者和非吸烟者的阴谋。定义两个x策划相互重合,调用MATLABlinspace函数。你可以画出34 66吸烟者和不吸烟者在同一散点图。

对有关= eng.linspace (1.0, 34.0, 34) nsdx = eng.linspace (1.0, 34.0, 66)

显示了轴的边界盒子函数。

eng.figure (nargout = 0) eng.hold(“在”,nargout = 0) eng.box(“在”,nargout = 0)

你必须调用,持有,盒子功能与nargout = 0,因为这些函数不返回输出参数。

情节的血压读数吸烟者和非吸烟者,和标签的阴谋。对于许多MATLAB函数,引擎可以返回一个MATLAB图形对象的句柄。你可以存储一个MATLAB处理对象在Python变量,但你不能操纵在Python对象属性。您可以将MATLAB对象作为输入参数传递给其他MATLAB函数。

eng.scatter(有关,sp 10“蓝色”)
< matlab。对象对象在0 x22d1510 >

这个例子中,其他地区的分配MATLAB函数的输出参数h作为一个占位符。

h = eng.scatter (nsdx nsp 10,“红色”)h = eng。包含(“病人(匿名)”)h = eng。ylabel(舒张压(毫米汞柱))h = eng。标题(“所有病人的血压读数”)h = eng.legend(“烟民”,“非烟民”)

绘制线条显示吸烟者和非吸烟者的平均血压读数。

x = matlab.double ([0, 35]) y = matlab.double ([89.9, 89.9]) h = eng.line (x, y,“颜色”,“蓝色”)h = eng.text(21.0, 88.5, 89.9(吸烟者avg。)”、“颜色”、“蓝色”)y = matlab.double ([79.4, 79.4]) h = eng.line (x, y,“颜色”,“红”)h = eng.text(5.0, 81.0,“79.4(不抽烟的avg)”、“颜色”、“红色”)

所有患者的血压读数。

另请参阅

|