学生休息室

分享技术和现实生活的例子,学生可以如何使用MATLAB和Simulink在他们的日常项目#学生成功金宝app

面向Python用户的MATLAB简介

今天的博客是由詹妮弗Rebbin, Jennifer是MathWorks工程开发组的应用支金宝app持工程师。在这个博客中,她分享了一些重要的概念,这些概念将帮助您作为Python用户快速使用MATLAB。珍妮佛,轮到你了…

- - - - - -

你有一些Python经验——可能来自编程或数据科学课程,或者来自有趣的副业项目。现在你开始钻研你的工程了职业或类,需要使用MATLAB。MATLAB和Python之间有很多相似之处,所以你的Python经验应该一个学习MATLAB的良好开端这篇博客文章探讨了MATLAB和Python之间的异同,并提供了在MATLAB中应用通用编程概念的语法示例。

学习MATLAB编程的基础知识

MATLAB中的基本数据结构是一个矩阵,而Python则把所有东西都当作一般的对象。事实上,MATLAB是"矩阵实验室"的缩写- - - - - -这个区别是定义MATLAB的一个重要部分。

让我们学习MATLAB编程用一个例子u一个MATLAB数据集爆米花数据来自一项关于爆米花品牌和爆米花类型的研究(Hogg 1987)。矩阵 的列是爆米花内核分别是Gourmet, National和Genericy。前三行对应批量使用一个油桶,最后三行对应批量使用一个空气波普尔。响应值是爆米花杯的产量

我们可以将数据加载到命令窗口面板MATLAB桌面

负载“爆米花”;爆米花
爆米花= 5.5 4.5 3.5 5.5 4.5 4 6 4 3 6.5 5 4 7 5 5 7 5 4.5

现在我们有了数据,我们想要执行一个简单的计算确定…的比率突然爆米花之间的美食与民族品牌年代由于我们没有指定输出变量,MATLAB使用v可变的来存储我们的计算结果。

爆米花(:1)。/爆米花(:,2)
Ans = 1.22 1.22 1.5 1.3 1.27 1.4

MATLAB是为线性代数而创建的算子,如部门运营商”/“进行常规矩阵运算,而一些Python库则逐个元素执行操作.执行element-wise在MATLA业务B,句点放在运算符前面,如”。/

了解更多常见的MATLAB语法及其功能,参考下面的表这种全面的指导

索引数据和函数输出

接下来,让我们学习如何在数据和函数输出中建立索引。在MATLAB中,数组的开始元素的索引是1,不像在Python中,开始元素的索引是0。

ATLAB使用一天索引,或者为每个数组维提供特定的索引值(例如行号和列号)。值得注意的是,在Python中索引是左包容和右排他的,但MATLAB在两端都包容。

爆米花
爆米花= 5.5 4.5 3.5 5.5 4.5 4 6 4 3 6.5 5 4 7 5 5 7 5 4.5
% View批与popper类型空气与N-D索引爆米花(4:最后,:)
Ans = 6.5 5 4 7 5.5 5 7 5 4.5
%查看批次与爆米花品牌美食家和通用与N-D索引爆米花(:1 [3])
Ans = 5.5 3.5 5.5 4 6 3 6.5 4 7 5 7 4.5

MATLAB还使用线性索引,其中一个下标依次遍历数组的每一列,或逻辑索引,MATLAB提取对应于逻辑数组的非零元素的矩阵元素在索引中使用“>”之类的操作符生成。查找有关这些索引策略的更多信息在这篇文章中

使用线性索引查看第9批爆米花(9)
ans = 4
% View批生产超过6杯爆米花与逻辑索引爆米花(爆米花> 6)
答案:7

扩大一个数组,在Python中,您可以附加该项。在MATLAB中,数组的大小会自动增加,以适应索引边界之外的新元素,这允许我们快速操作数组。如果信息是缺失时,MATLAB用零填充矩阵以保持矩形。让我们为要测试的第四个popper品牌添加一个新列。

爆米花(1,4)= 0
爆米花= 5.5 4.5 3.5 0 5.5 4.5 4 0 6 4 3 0 6.5 5 4 0 7 5.5 5 0 7 5 4.5 0

现在我们知道了如何在MATLAB中展开数组,让我们回到原来的矩阵。要删除刚刚添加的列,只需执行以下操作。

爆米花(:,4)= [];

MATLAB和Python合并了稍微不同的参考方案。查看下表,观察MATLAB引用语法的其他用法。

令状e和美国eMATLAB函数

现在,我们理解MATLAB基本编程语法和索引,让我们探索一个MATLAB内置的函数的意思是求平均值爆米花的收益率每个流行品牌。当调用内置函数时在MATLAB,我们将不需要引用包的名称e。

brandAvg =意味着(爆米花)
3 .品牌平均值= 6.25 4.75

让我们创建一个用户定义函数popperTypeAvg在一个新函数文件比较…的产量石油空气波普尔类型。MATLAB使用函数结束,而Python使用def我们将使用一个输入参数和两个输出参数将变量从函数工作区带到我们的MATLAB基础工作区。

%保存为函数文件在MATLAB路径称为popperTypeAvg。M(文件和函数名必须匹配)函数[firstthalfavg, secondHalfAvg] = popperTypeAvg(data) rows1to3 = mean(data(1:3,:),'all') rows4to6 = mean(data(4:6,:),'all'))结束

现在我们叫我们的函数popperTypeAvg,将输入声明为数据集popcorn和输出年代作为变量oilAvgairAvg

[oilAvg, airAvg] = popperTypeAvg(爆米花)
oilaverage = 4.5 airaverage = 5.5

除了创建函数定义文件之外,还有其他的方法yS来定义函数在MATLAB包括本地函数在脚本文件的末尾年代嵌套函数位于另一个函数中,匿名函数定义在一个可执行语句

可视化数据

让我们可视化我们的数据,以便更好地了解哪个品牌收益率最爆米花。我们可以调整数字properties在函数调用中使用名称-值对,或单独的命令年代。

bar(popcorn,'BarWidth',.75) brandNames = ["Gourmet","National","Generic"];* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

如果我们想要创造一图三图(每个爆米花品牌各一图),我们可以使用MATLAB函数tiledlayout指定行数和列数Ns作为输入参数。

要获得数组的列数,我们可以指定size中的第二个维度(A,dim)tiledlayout(1、大小(爆米花,2))i = 1:size(爆米花,2)nexttile bar(爆米花(:,i)) title(brandNames(i)) xlabel('Batch Number') ylabel('Cups of Popped popcorn ')结束

理解数据类型

与其他语言不同的是,Python都不是n或MATLAB需要声明一个变量或变量类型一个变量创建的那一刻分配一个价值

在Python中很容易不小心创建整数特殊的构造函数可能是必要的要创建数字数组,MATLAB的默认数值类是双精度浮点数吗在MATLAB中,“1”“1。总是相等的。双精度可以很复杂接受大多数数学运算。T查看变量的数据类型,您可以使用类型在Python中。在MATLAB中,我们可以使用函数,或中的变量数据类型MATLAB工作空间浏览器

“爆米花”
名称大小字节类属性爆米花6x3 144双

MATLAB有内置函数用于转换数据类型。让我们来探讨一个这些函数的array2table创建一个表并标记我们的爆米花的数据集。

名牌=[“美食”、“国家”、“通用的”);array2table(爆米花、“VariableNames”名牌)
ans = 6 x3表格美食国家通用的  _______ ________ ________5.5 4.5 3.5 5.5 4.5 4 6 4 3 6.5 5 4 7 5.5 5 7 5 4.5

n MATLAB,逻辑数据类型可以有价值“0”因为假或“1为真正的让我们来探究一下这种行为通过利用逻辑索引条件语句来确定Gourmet品牌是否内核平均产量最大

= mean(爆米花)(brandAvg(1)>brandAvg(2))&&(brandAvg(1)>brandAvg(3))
品牌平均值= 6.25 4.75 4 ans =逻辑1

其他数据类型选项,如字符、日期、类别数组、结构和单元格数组探索在MATLAB数据类型文档中或在下表

实现循环行为

在编程中,循环重复一个序列,直到满足指定的条件。通常,循环会调整数组的大小,需要MATLAB不断查找用于更大的连续内存块y。一个技巧提高代码执行时间在MATLAB中使用循环和条件语句时,或建立阵列所需的最大空间量.要预分配数组,请使用预期的结果创建一个数组然后替换元素,而不是每次迭代都更改数组的大小。让我们找到内核品牌w产率f每一个batch。

%首先,预分配bestBrand数组并将数据类型更改为categoricalbestBrand = 0 (6,1);bestBrand =分类(bestBrand);%对于每一行,检查哪一列包含最大的收益i = 1:6如果bestBrand(i) = 'Gourmet';结束如果bestBrand(i) = '国家';结束如果bestBrand(i) = '通用';结束结束bestBrand
bestBrand x1 = 6分类数组Gourmet Gourmet Gourmet Gourmet Gourmet

从这个分析中,我们可以看出,Gourmet品牌生产的爆米花最多所有六个批处理西文尽管这种方法提供了想要的结果代码很长,执行时间很长。我们怎样才能更有效地找到最好的品牌?

ATLAB经常不需要写循环,因为它是“向量化的”。对矩阵进行了MATLAB优化x和向量操作所以编写向量化代码可以提高代码的可读性、速度和内存吗我们可以通过调用马克斯对整个爆米花数组而不是每次一行。马克斯函数返回多个输出,我们用方括号来表示。

要返回每一行的最大值作为列向量,我们在max(a,[],dim)中指定第二个维度[maxVal,指数]= max(爆米花,[],2);名牌(索引)
ans = 1 x6字符串“Gourmet”“Gourmet”“Gourmet”“Gourmet”“Gourmet”“Gourmet”

看看下面的表格循环的行为和条件语句to在MATLAB结合

定义一个自定义类

We可以使用面向对象编程当构建应用程序组参数(属性)和函数(方法)在一个类中。而Python类可以在任何地方定义,MATLAB类es创建在类定义中n文件MATLAB类可以更好地控制对象的操作,比如将属性定义为“常量”以禁用修改。检查一个n利用传感器阵列数据的例子或者遵循下面的类框架。

%保存为MyClass文件。M,类名必须匹配文件名classdefMyClass属性道具结束方法函数obj = MyClass (val)结束结束结束

以上类的框架显示了MATLAB违约复制- - - - - -通过- - - - - -值类,而不是按引用复制的类。看看这个页面概述这两种类类型之间的区别

封闭的思想

我们希望这个信息描绘了函数图相似点和差异之间的Python和MATLAB语言。Hopefully你发现MATLAB很容易学习和可以我们根据这个信息开始d更多的介绍性的资源,看看我们的两个小时MATLAB斜坡弯道教程,阅读开始使用MATLAB或者深入研究MathWorks文档和文章链接贯穿整个博客。一定要在下面评论或者使用你喜欢的社交媒体平台分享你正在做的事情,并提出任何问题年代

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。