学生休息室

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

介绍MATLAB为Python用户

今天的博客写的詹妮弗Rebbin珍妮弗是一个应用程序支持工程师MathWorks工程开发小金宝app组。在这个博客中,她分享一些重要的概念,将帮助你使用MATLAB作为一个Python用户速度。詹妮弗,交给你了. .

- - - - - -

你有一些Python经验——也许从编程或数据科学课,或者从有趣的项目。现在你挖掘工程职业或类和需要使用MATLAB。MATLAB和Python之间有很多相似之处,所以你的Python应该经验学习MATLAB的良好开端这篇文章探讨了MATLAB和Python之间的异同,为应用提供语法的例子一般在MATLAB编程概念。

学习MATLAB编程的基础知识

MATLAB是一个矩阵的基本数据结构,而Python将一切视为一般的对象。事实上,MATLAB是一个缩写“矩阵实验室”- - - - - -这种差异是不可分割的一部分,定义了MATLAB。

让我们学习MATLAB编程用一个例子u一个MATLAB数据集爆米花爆米花的数据来自一项研究品牌和波普尔类型(何克1987)。矩阵的列 爆米花内核品牌、美食、国家通用,respectively。前三行对应批量使用一个石油波普尔,最后三行对应批量使用一个空气波普尔。响应值的收益率在杯爆米花

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

负载“爆米花”;爆米花
爆米花= 5.5 4.5 3.5 5.5 6.5 4.5 - 4 6 4 3 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中,一开始元素的数组索引,与Python的开始元素都有一个索引0。

ATLAB使用一天索引,或者提供一个特定的索引值为每个数组维度(如行号和列号)。重要的是要注意,指数在Python中剩下的包容性和独家但MATLAB是包容性的两端。

爆米花
爆米花= 5.5 4.5 3.5 5.5 6.5 4.5 - 4 6 4 3 5 4 7 5 5 7 5 4.5
%批次与波普尔式空气一天索引视图爆米花(4:最后,:)
ans = 6.5 4.5 5 4 7 5.5 5 7 5
%视图批次与爆米花品牌美食和一般一天索引爆米花(:1 [3])
ans = 5.5 3.5 5.5 4.5 4 6 3 6.5 - 4 7 5 7

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

%第九批与线性索引视图爆米花(9)
ans = 4
%视图批量生产超过6杯爆米花与逻辑索引爆米花(爆米花> 6)
ans = 6.5 7 7

扩大一个数组在Python中,您可以添加项。在MATLAB中,数组的大小增加自动适应新元素以外的指数范围允许我们快速操作数组。如果信息是失踪,MATLAB垫与零矩阵保持直角。让我们添加一个新的列第四个波普尔品牌进行测试。

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

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

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

MATLAB和Python将稍微不同的参考方案。查看下表观察额外使用MATLAB引用语法。

令状e和美国eMATLAB函数

现在,我们理解基本的MATLAB编程语法和索引,让我们探索一个MATLAB内置的函数的意思是并找到平均爆米花的收益率为每个波普尔品牌。当调用内置函数在MATLAB,我们不需要引用一个包e。

brandAvg =意味着(爆米花)
brandAvg = 6.25 4.75 - 4

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

%保存为文件在MATLAB路径称为popperTypeAvg函数。(文件和函数名必须匹配)函数[firstHalfAvg, secondHalfAvg] = popperTypeAvg(数据)rows1to3 =意味着(数据(1:3:),“所有”)rows4to6 =意味着(数据(4:6 -:),“所有”)结束

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

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

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

可视化数据

让我们想象我们的数据,得到一个更好的主意品牌收益率最爆米花。我们可以调整图properties在函数调用使用名称-值对,或单独的命令年代。

栏(爆米花、“BarWidth”。)名牌=[“美食”、“国家”、“通用的”);传奇(名牌,“位置”,“bestoutside”)标题(“爆米花收益率”)包含(批号)ylabel(“杯爆米花”)

如果我们想要创造一个图有三块(每个爆米花波普尔品牌),我们可以用MATLAB函数tiledlayout指定的行数和科勒姆ns作为输入参数。

%获取数组的列数,我们可以指定第二个尺寸大小(A,昏暗的)tiledlayout(1、大小(爆米花,2))i = 1:尺寸(爆米花,2)nexttile栏(爆米花(:,i))标题(名牌(我)包含(批号)ylabel(“杯爆米花”)结束

理解数据类型

不像其他语言,无论是Pythonn或MATLAB需要声明一个变量或变量类型;一个变量创建的那一刻分配一个价值

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

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

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

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

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

brandAvg =意味着(爆米花)(brandAvg (1) > brandAvg (2) & & (brandAvg (1) > brandAvg (3))
brandAvg 4 ans = 4.75 = 6.25逻辑1

性格等其他数据类型的选择、日期、分类数组,结构和单元阵列探索在MATLAB数据类型的文档或在下表

实现循环行为

在程序设计中,循环重复序列,直到满足指定条件。通常,循环调整数组和需要MATLAB不断看对于较大的连续memor块y。一个技巧提高代码执行时间在MATLAB中使用循环和条件语句,或者建立所需的最大数量的空间阵列。预先分配一个数组,数组创建一个预期的结果大小,然后替换元素,而不是改变数组大小与每个迭代。让我们找到内核品牌wf i的最高收益率每一个batch。

%,预先分配bestBrand数组和改变数据类型分类bestBrand = 0 (6,1);bestBrand =分类(bestBrand);%为每一行,检查列包含最高产量i = 1:6如果爆米花(1)我= = max(爆米花(我,:))bestBrand (i) =“美食”;结束如果爆米花(我,2)= = max(爆米花(我,:))bestBrand (i) =“国家”;结束如果爆米花(我,3)= = max(爆米花(我,:))bestBrand (i) =“通用”;结束结束bestBrand
bestBrand x1 = 6分类数组美食美食美食美食美味的美食

从这个分析,我们看到了美食品牌最爆米花了所有六个批处理西文尽管这种方法提供了想要的结果,代码是漫长的,需要很长时间来执行。我们怎样才能找到最好的品牌更有效?

ATLAB经常不需要写循环,因为它是“矢量”。MATLAB是后来的优化x和向量操作,所以编写向量化代码可以提高代码的可读性、速度和记忆我们可以vectorize循环通过调用马克斯对整个爆米花数组而不是一次一行。马克斯函数返回多个输出,所以我们将捕获这些方括号。

%返回每一行的最大一个列向量,我们指定第二维度马克斯([],暗)[maxVal,指数]= max(爆米花,[],2);名牌(索引)
ans = 1 x6字符串数组“美食”“美食”“美食”“美食”“美食”“美食”

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

定义一个自定义类

We可以使用面向对象编程在构建应用程序参数(属性)和函数(方法)成一个类。尽管Python类可以定义任何地方,MATLAB类es创建在一个类定义n文件MATLAB类可以是有用的有更多的控制,不能做一个对象,例如一个属性定义为“常数”禁用修改。检查一个n利用传感器阵列数据示例或者按照下面的类框架。

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

以上类的框架显示了MATLAB违约复制- - - - - -通过- - - - - -值类,而不是一个copy-by-reference类。看看这个页面概述了这两个类类型之间的差异

封闭的思想

我们希望这个信息描绘了一图片的功能相似点和差异之间的Python和MATLAB语言。Hopefu增加你找到MATLAB容易学习和我们starte e这个信息d更多的介绍性的资源,看看我们两个小时MATLAB斜坡弯道教程,阅读开始使用MATLAB,或深入MathWorks文档和在这篇博客文章链接。一定要下面的评论或者使用你喜欢的社交媒体平台分享你所从事的工作,问任何问题年代

|

댓글

댓글을남기려면링크를클릭하여MathWorks계정에로그인하거나계정을새로만드십시오。