学生休息室

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

面向Python用户的MATLAB简介

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

- - - - - -

您有一些Python体验 - 也许来自编程或数据科学课程,或者可能是来自Fun Side Projects。现在你正在挖掘你的工程职业或者类,需要使用MATLAB。MATLAB和Python之间有很多相似之处,所以你的Python经验应该一个好的头开始学习matlab这篇博客文章探讨了MATLAB和Python之间的异同,并提供了在MATLAB中应用通用编程概念的语法示例。

了解MATLAB编程的基础知识

MATLAB中的基本数据结构是一个矩阵,而Python则把所有东西都当作一般的对象。事实上,马铃薯是"矩阵实验室"的缩写- - - - - -这个区别是定义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库执行操作元素元素.进行eleme.nt-wiseMatla的操作B,句点放在运算符前面,如“。/

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

索引数据和功能输出

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

ATLAB使用N-D.索引或为每个数组维提供特定的索引值(例如行号和列号)。值得注意的是,在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
%查看批次与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 5.5 4 6 3 6.5 4 7 5 7 4.5

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

使用线性索引查看第9批爆米花(9)
ans = 4.
%查看批量产生超过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,我们将不需要引用包的名称e。

Brandvg =卑鄙(爆米花)
Brandvg = 6.25 4.75 4

让我们创建一个用户定义函数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(爆米花)
Oilavg = 4.5 Airavg = 5.5

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

可视化数据

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

酒吧(爆米花,'arwidth',。75)Brandnames = [“美食”,“国家”,“通用”];传奇(Brandnames,'地点','最好的')标题('爆米花产量')xlabel('批号')ylabel('obs popped popcorn')

如果我们想创建有三个地块的一个数字(每个爆米花盛宝品牌一个), 我们可以用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创建一个表并标记列的我们的爆米花的数据集。

Brandnames = [“Gourmet”,“National”,“Generic”];Array2table(爆米花,'variablenames',brandnames)
ans = 6x3.表格美食国家通用的  _______ ________ ________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每一个BATC.h。

%首先,预分配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,index] = max(popcorn,[],2);Brandnames(指数)
ans = 1 x6细绳“Gourmet”“Gourmet”“Gourmet”“Gourmet”“Gourmet”“Gourmet”

看看下面的表格循环的行为和有条件的陈述to在matlab中合并

定义自定义类

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

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

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

封闭的思想

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

|

评论

要发表评论,请点击在这里登录您的MathWorks帐户或创建新的。