Matlab基础操作学习笔记
文章目录
- 一、数据类型
- 1.常见的MatLab数据类型:
- 2.数据类型转换:
- 二、函数
- 1.脚本
- 2.函数
- 三、矩阵与数组
- 1.矩阵
- 2.数组
- 四、运算符
- 1.算数运算符
- 2.关系运算符
- 3.逻辑运算符
- 4.位运算符
- 5.集合操作
- 五、流程控制
- 1.决策
- 2.循环
- 六、绘图
- 1.`plot`函数
- 2.在图上添加标题,标签,网格线和缩放
- 3.在同一个图上绘制多个函数
- 4.设置轴刻度
- 5.子图
- 6.绘制条形图
- 7.绘制轮廓
- 8.三维图
- 七、高等数学计算
- 1.代数(方程求解)
- 2.微积分
- 3.微分和导数
- 4.积分
一、数据类型
1.常见的MatLab数据类型:
数据类型 | 描述 |
---|---|
int(8\16\32\64)
|
(8\16\32\64)位有符号整数 |
uint(8\16\32\64)
|
(8\16\32\64)位无符号整数 |
single
|
单精度数值数据 |
double
|
双精度数值数据 |
logical
|
逻辑值为1或0,分别代表true和false |
char
|
字符数据(字符串做为字符向量存储) |
2.数据类型转换:
MatLab提供很多的函数以转换数据类型,具体需要使用时,上网搜索得到函数后直接使用
二、函数
脚本和函数就是把一段程序“打包”。
MATLAB允许编写两种程序文件
- 脚本 - 脚本文件是以.m扩展名的程序文件。在这些文件中,可以编写一系列要一起执行的命令。脚本不接受输入,不返回任何输出。它们对工作空间中的数据进行操作。
- 函数 - 函数文件也是扩展名为.m的程序文件。函数可以接受输入和返回输出。内部变量是函数的局部变量。
1.脚本
- 使用IDE,在主页中点击新建就能很方便地创建一个脚本
- 新建脚本后需要命名并保存到本地文档后才能运行
- 使用IDE,在主页中点击打开就能很方便地打开一个脚本
2.函数
类似于Python的函数,C#的方法,MATLAB的函数也是一个道理。脚本可以理解为无需参数的函数,他只保存了一段运行代码;而函数需要参数,并且返回结果。
函数语句语法
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
匿名函数
匿名函数就像传统编程语言中的内联函数,在单个MATLAB语句中定义。 它由单个MATLAB表达式和任意数量的输入和输出参数组成。可以在MATLAB命令行或函数或脚本中定义一个匿名函数。这样就可以创建简单的函数,而无需为它们创建一个文件。- 匿名函数的语法
f = @(arglist)expression
- 实例:
- 匿名函数的语法
power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)
主函数和次函数
次函数包含在主函数中,从外部调用函数时只能调用主函数而不能调用次函数。注意:主函数中变量对子函数是不可见的!- 示例:
编写一个名为quadratic
的函数来计算二次方程的根。该函数需要三个输入参数:二次系数,线性系数和常数项。计算并会返回根。
- 示例:
function [x1,x2] = quadratic(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadraticfunction dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function
嵌套函数
嵌套函数包含在主函数中,主函数的变量对嵌套函数可见。注意与子函数的区别!- 示例:
一样是名为quadratic
的函数:
- 示例:
function [x1,x2] = quadratic2(a,b,c)
function disc % nested function
d = sqrt(b^2 - 4*a*c);
end % end of function disc
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of function quadratic2
- 全局变量
全局变量可以由多个函数调用使用,定义全局变量只需在变量名称前加上global
即可
三、矩阵与数组
1.矩阵
定义矩阵
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
引用矩阵中的元素
- 单个元素:
a[n,m]
- 一行(或列)元素:
a[n, :]
(或a[: ,m]
) - 第
m
至第n
列中的元素:a(:,m:n)
- 删除一行(或列):
a(n, : ) = []
- 单个元素:
矩阵的运算
- 加法、减法:
a + b
、a - b
- 除法:左除
a/b
、 右除a\b
- 标量运算:标量运算产生一个具有相同数量的行和列的新矩阵,其原始矩阵的每个元素都被相加,相减,相乘以或除以数字。
- 转置:
a'
- 连接:行接
[a , b]
、列接[a ; b]
- 乘法:
a*b
- 行列式计算:使用
det
函数,如:det(a)
- 逆计算:使用
inv
函数,如:inv(A)
- 加法、减法:
2.数组
特殊数组
zeros()
函数是用来创建一个全零的数组ones()
函数创建一个所有元素为1的数组eye()
函数创建一个单位矩阵rand()
函数在(0,1) - 上创建均匀分布的随机数的数组
魔方
魔方的元素被逐行,逐列或者对角线地添加时,它产生相同的和。
magic()
函数创建一个魔术方阵。这需要一个参数,指定正方形的大小。 参数必须是大于或等于3的标量。
Trial>> magic(4)ans =16 2 3 135 11 10 89 7 6 124 14 15 1
- 多维数组
MATLAB中的多维数组是正常二维矩阵的扩展。通常要生成一个多维数组,首先创建一个二维数组然后再扩展它。
数组a
是3×3
数组; 可以通过提供以下值来添加第三维:
>> a = [7 9 5; 6 1 9; 4 3 2];
>> a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]ans(:,:,1) =7 9 56 1 94 3 2ans(:,:,2) =1 2 34 5 67 8 9
还可以使用ones()
,zeros()
或rand()
函数来创建多维数组。
也可以使用cat()
函数来构建多维数组。它沿着指定的维度连接数组列表。
cat()
函数的语法 - B = cat(dim, A1, A2...)
,其中B
是创建的新阵列、 A1
,A2
,...
是要连接的数组、 dim
是连接数组的大小
%示例
a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])c(:,:,1) =9 8 76 5 43 2 1
c(:,:,2) =1 2 34 5 67 8 9
c(:,:,3) =2 3 14 7 83 9 0
- 数组函数
数组中自带很多的函数,建议需要使用时上网查找后使用
四、运算符
1.算数运算符
运算符 | 描述说明 |
---|---|
+
|
加法或一元加法运算。 |
-
|
减法或一元减法运算。 |
*
|
矩阵乘法。 C = A * B 是矩阵A 和B 的线性代数乘积。
|
.*
|
数组乘法。A .* B 是数组A 和B 的逐个元素乘积。A 和B 必须具有相同的大小,除非它们之一是标量。
|
/
|
数组右除。 |
./
|
数组右除。A./B 是具有元素A(i,j)/ B(i,j) 的矩阵。
|
\
|
反斜杠或数组左除。如果A 是一个方阵,A \ B 与inv(A)* B 大致相同,除了以不同的方式计算。如果A 是n×n 矩阵,B 是具有n 个分量的列向量或具有若干这样的列的矩阵,则X = A \ B 是方程AX = B 的解。如果A是不规则或几乎单数,将显示警告消息。
|
^
|
如果p 是标量,矩阵 X ^ p 是X 的P 次幂。
|
.^
|
如果p 是标量,矩阵 X .^ p 是X 中的所有元素的P 次幂。
|
'
|
矩阵转置。 ' 是A 的线性代数转置。对于复数矩阵,这是复共轭转置。
|
.'
|
数组转置。.' 是A 的数组转置。对于复数矩阵,这不涉及共轭。
|
2.关系运算符
操作符 | 说明描述 |
---|---|
<
|
小于 |
<=
|
小于或等于 |
>
|
大于 |
>=
|
大于或等于 |
==
|
等于 |
~=
|
不等于 |
3.逻辑运算符
MATLAB提供两种类型的逻辑运算符和函数:
逐元素 - 这些运算符对逻辑阵列的相应元素进行操作。
短路 - 这些运算符在标量和逻辑表达式上运行。
元素逻辑运算符在逻辑数组上运行逐个元素。符号
&
,|
和〜
是逻辑数组运算符AND
,OR
和NOT
。短路逻辑运算符允许逻辑运算短路。符号
&&
和||
是逻辑短路运算符AND
和OR
。
4.位运算符
和其他的语言一样,&
,|
和^
分别对应着与
,或
和非
示例,A = 60
和B = 13
:
A = 0011 1100B = 0000 1101-----------------A&B = 0000 1100A|B = 0011 1101A^B = 0011 0001~A = 1100 0011
MATLAB还提供了诸如“按位与”和“按位或”以及“按位非”操作,移位操作等位操作的各种功能,如需用到上网搜索即可,毕竟是少用函数。
5.集合操作
MATLAB为集合操作提供了各种功能,如联合,交集和集合成员的测试等。
五、流程控制
这些都是大家很熟悉的语句,一笔带过~
1.决策
if … elseif … elseif … else … end
语句switch
语句
2.循环
while
循环:在给定条件为真时,重复一个语句或一组语句。它在执行循环体之前测试状态。for
循环:多次执行一系列语句,并缩写管理循环变量的代码。break
语句:终止循环语句,并将执行转移到循环之后的语句。continue
语句:导致循环跳过主体的剩余部分,并在重申之前立即重新测试其状态。
六、绘图
1.plot
函数
要使用plot
函数来绘制图形,需要执行以下步骤:
- 通过指定要绘制函数的变量
x
的值的范围来定义x
。 - 定义函数,
y = f(x)
- 调用
plot
命令,如下:plot(x,y)
画一个简单的抛物线吧!
x = [-100:10:100];
y = x.^2;
plot(x, y)
2.在图上添加标题,标签,网格线和缩放
MATLAB允许沿x轴
和y轴
,网格线添加标题,标签,并且还可以调整轴来绘制图形。
xlabel
和ylabel
命令沿x轴
和y轴
生成标签。title
命令用于在图表上设置标题。grid on
命令用于将网格线放在图形上。axis equal
命令允许生成具有相同比例因子的绘图和两个轴上的空格。axis square
命令生成一个方形图。
应用一下这些指令吧~
x = [0:0.01:10];
y = sin(x);
plot(x, y), xlabel('x'), ylabel('Sin(x)'), title('Sin(x) Graph'),
grid on, axis equal
3.在同一个图上绘制多个函数
x = [0 : 0.01: 10];
y = sin(x);
g = cos(x);
plot(x, y, x, g), legend('Sin(x)', 'Cos(x)')
MATLAB提供了八个基本的颜色选项来绘制图形。
代码 | 颜色 |
---|---|
w
|
White |
k
|
Black |
b
|
Blue |
r
|
Red |
c
|
Cyan |
g
|
Green |
m
|
Magenta |
y
|
Yellow |
4.设置轴刻度
axis
命令用来设置轴刻度。可以通过以下方式使用axis
命令为x
和y
轴提供最小和最大值:
axis ( [xmin xmax ymin ymax] )
5.子图
当在同一个图中创建一个绘图数组时,这些图中的每一个图称为子图。 subplot
命令用于创建子图。该命令的语法是 subplot(m, n, p)
,其中,m
和n
是绘图数组的行数和列数,p
表示放置指定图形的位置。
在同一个Figure上生成函数 y = e − 1.5 x s i n ( 10 x ) y = e^{-1.5x}sin(10x) y=e−1.5xsin(10x)和 y = e − 2 x s i n ( 10 x ) y = e^{-2x}sin(10x) y=e−2xsin(10x)
x = [0:0.01:5];
y = exp(-1.5*x).*sin(10*x);
subplot(1,2,1)
plot(x,y), xlabel('x'),ylabel('exp(–1.5x)*sin(10x)'),axis([0 5 -1 1])
y = exp(-2*x).*sin(10*x);
subplot(1,2,2)
plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(10x)'),axis([0 5 -1 1])
6.绘制条形图
bar
命令绘制二维条形图,下面举个例子来演示如何使用。
示例:
假设有10名学生,这些学生某次考试获得分数是:75,58,90,87,50,85,92,75,60和95,使用这此分数来绘制条形图如下。
x = [1:10];
y = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95];
bar(x,y), xlabel('Student'),ylabel('Score'),
title('First Sem:')
7.绘制轮廓
两个变量的函数的轮廓线是一个曲线,函数有一个恒定值。等高线用于通过连接等于高于某一水平的点(如平均海平面)来创建轮廓图。MATLAB提供了绘制轮廓图的contour
函数。
示例:
绘制一个函数 g = f ( x , y ) = x 2 + y 2 g = f(x,y) = x^2 + y^2 g=f(x,y)=x2+y2,并显示函数的轮廓线。
注:meshgrid
命令用于生成在每种情况下给出x和y范围以及增量规范的元素矩阵。
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3);
g = x.^2 + y.^2;
contour(x,y,g)
8.三维图
三维图基本上显示的是由两个变量g = f(x,y)
中的函数定义的表面,使用surf
命令创建一个曲面图。
示例:
画一个函数 g = x e − ( x 2 + y 2 ) g = xe^{-(x^2+y^2)} g=xe−(x2+y2)的3D曲面图
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
七、高等数学计算
1.代数(方程求解)
- 求解基本代数方程
solve
函数用于求解代数方程。在其最简单的形式中,solve
函数将引用中的方程式作为参数。
%几种solve求解的形式:
%1:
solve('x-178=0');%2:
solve('x-110');%3:
%求解给定的变量,形式:solve(equation, variable)
solve('v-u-3*t^2=0', 'v'); %求解'v'
求解代数中的基本代数方程
roots
函数用于求解代数中的代数方程。
%求解等式x - 5 = 0
Trial>> y = roots([1, -5])y =5
- 求解(二)高阶方程
solve
函数也可以用来求解高阶方程。通常用于求解二次方程。 该函数返回数组中方程的根。
%求解二次方程x^2 -7x +12 = 0
Trial>> eq = 'x^2 -7*x + 12 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));The first root is:
3The second root is:
4
- 求解方程组
solve
函数也可用于生成包含多个变量的方程组的解。
s = solve('5*x + 9*y = 5','3*x - 6*y = 4');
x = s.x
y = s.yx =22/19y =-5/57
- 扩展和集合方程
expand
和collect
函数分别扩展和集合方程。collect
函数合并同类项。
syms x %symbolic variable x
syms y %symbolic variable y
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))% collecting equations
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))ans =x^2 + 4*x - 45ans =x^4 + x^3 - 43*x^2 + 23*x + 210ans =2*cos(x)*sin(x)ans =cos(x)*cos(y) - sin(x)*sin(y)ans =x^4 - 7*x^3ans =x^6 - 8*x^5 + 15*x^4
- 代数表达式的因式分解和简化
factor
函数用于因式分解。simplify
函数用于简化运算结果。
syms x
syms y
factor(x^3 - y^3)
f = factor(y^2*x^2,x)
simplify((x^4-16)/(x^2-4))ans =[ x - y, x^2 + x*y + y^2]f =[ y^2, x, x]ans =x^2 + 4
2.微积分
- 计算极限
MATLAB提供计算极限的limit
函数。在其最基本的形式中,limit
函数将表达式作为参数,并在独立变量为零时找到表达式的极限。默认符号变量趋于0。
syms x
limit((x^3 + 5)/(x^4 + 7)) %输出5/7limit((x - 3)/(x-1),1)%x趋于1,输出NaN
- 左右边界极限
通过将字符串'left'
和'right'
作为最后一个参数传递给limit
命令来计算左右极限。
f = (x - 3)/abs(x-3); %f(x) = (x - 3)/|x - 3|
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')l =-1r =1
3.微分和导数
求导
MATLAB提供用于计算符号导数的diff
命令。 以最简单的形式,将要微分的功能传递给diff命令作为参数。使用diff(f , n)
还可以计算高阶导数,其中n
为阶数。查找曲线的最大和最小值
如果正在搜索图形的局部最大值和最小值,即极大值和极小值,基本上是在特定地点的函数图上或符号变量的特定值范围内查找最高点或最低点。
MATLAB没有特别的函数和命令来求极大值和极小值,只能通过数学方法,即结合图像,对求导后的函数求解找出极大值和极小值的点。求解微分方程
MATLAB提供了用于求解微分方程的dsolve
命令。其标准形式是:
r=dsolve('eqn1','eqn2',...,'cond1','cond2',...,'var')
,其中eqni
表示第i
个微分方程,condi
表示第i
个初始条件,var
表示微分方程中的自变量,默认为t
。
现在求解三个微分方程试试,分别是
① d y d x = 3 x 2 \frac{dy}{dx} = 3x^2 dxdy=3x2
② d y d x = 3 x 2 , y ( 0 ) = 2 \frac{dy}{dx} = 3x^2,y(0)=2 dxdy=3x2,y(0)=2
③ d x d y = y , d 2 y d 2 t − d y d t = 0 , x ( 0 ) = 2 , y ( 0 ) = 1 , d y ( 0 ) = 1 \frac{dx}{dy} = y,\frac{d^2y}{d^2t} -\frac{dy}{dt}= 0,x(0)=2,y(0)=1,dy(0)=1 dydx=y,d2td2y−dtdy=0,x(0)=2,y(0)=1,dy(0)=1
%例一
dsolve('Dy=3*x^2','x')
ans =x^3 + C1%例二
dsolve('Dy=3*x^2','y(0)=2','x')
ans =x^3 + 2%例三
[x,y]=dsolve('Dx=y','D2y-Dy=0','x(0)=2','y(0)=1','Dy(0)=1')x =exp(t) + 1y =exp(t)
4.积分
不定积分
MATLAB提供了一个用于计算表达式积分的int
命令。写法为int(f)
,即求f
的不定积分。定积分
通过传递要计算积分的极限,int
函数可用于定积分。写法为int(f, a, b)
,其含义就是 ∫ a b f ( x ) d x = F ( b ) − F ( a ) \int_{a}^{b}f(x)dx = F(b)-F(a) ∫abf(x)dx=F(b)−F(a)
学习资源来自:易百教程
Matlab基础操作学习笔记相关推荐
- 多项式基础操作 - 学习笔记
原文链接https://www.cnblogs.com/zhouzhendong/p/polynomial.html 下载链接: 多项式基础操作 #include <bits/stdc++.h& ...
- pytorch基础操作学习笔记(autograd,Tensor)
简述 简单讲讲关于torch.autograd内容(因为我也有点菜) 文章目录 简述 简单讲讲 Tensor 介绍Tensor 创建Tensor 获取Tensor数据规模 将tensor转成其他数据类 ...
- [Matlab]基础教程学习笔记(一):基础和设置和矩阵教程
一.Matlab设置函数. path:显示搜索路径所包含的所有内容 cd:currentdirection查看当前路径 %:添加注释 userpath:显示默认的路径. 示例:userpath('D: ...
- linux基础操作学习笔记
linux 0.序 0.1网络连接概念 0.1.1P地址IPADDR IP地址是一种逻辑地址,用来标识网络中一个个主机 P地址=网络地址+主机地址 IP地址是一个 4 * 8bit(1字节 ...
- comsol与matlab连接使用学习笔记 1 基础设置
comsol与matlab连接使用学习笔记 1 基础设置 前言 1.安装 COMSOL livlink for Matlab 2.首次运行 前言 以前从来没有用过comsol livelink for ...
- Python 基础知识学习笔记——NumPy
Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
- Python 基础知识学习笔记——OpenCV(1)
Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...
- Python基础知识学习笔记——Matplotlib绘图
Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...
最新文章
- 容器管理大战:Kubernetes vs.Docker Swarm与Amazon ECS
- 反向代理or后端nginx 生产用于缓存视频需要解决的问题
- 网站优化两大方面谁都不能忽视!
- 如何查看tomcat是否安装成功_如何查看网站是否被收录?
- java怎样循环写数组按钮_java – 将按钮变量声明为带有for循环android的数组
- “计量确认”与“检定”之区别
- 快速git本地项目到github的关键命令及执行步骤(附上idea到git的步骤)
- 五种编程语言解释数据结构与算法——顺序表3(JavaScript与Python语言实现)
- python-rrdtool python-pyrrd
- ABB机器人仿真软件RobotSdutio 安装使用常见部分问题集
- 值得分享的炒白银技巧有哪些?
- python星号直角三角形边长公式_三角形边长计算公式大全
- 服务器2003如何修复0,Windows Server 2003 SP2补丁无法安装解决方法(密钥无效)
- SolidWorks PDM二次开发---检出与检入
- 【杂谈】什么文章可以给有三AI投稿?你能得到什么
- 光纤交换机 序列号_交换机 获取S系列交换机序列号
- 使用Python,OpenCV构建移动文档扫描仪
- 群体智能算法之蚁群算法初探(一)
- 将音频格式wav格式转为g711u,g711a及g723
- vue 图片不存在时 显示自定义图片
热门文章
- 【小马java】1、为什么要做java教程
- HR64个经典面试问题【汇总版】
- Java中10的平方
- Python接口自动化测试自学路线
- 接口测试框架3之httprunnerV3入门以及HttpRunner安装详解
- 4天掌握python量化交易_【量化】4天学会python机器学习与量化交易-笔记1(p6~p10)
- 服务器配置DNS辅助区域出错
- 如何用photoshop给图片加文字?
- cocos2dx掼蛋_精通Cocos2d-x游戏开发(进阶卷) (王永宝著) 完整pdf扫描版[98MB]
- html/css使文字图片div在整个网页上居中(水平居中+垂直居中)transform属性配置