排序和情节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)”、“颜色”、“红色”)