建模学习
1. 命令
2. 运算符
3. 矩阵
创建
- linespace(first value,last value, number),含有number个元素;
- 冒号表达式,从first到value,以增量number向上增;
- logspace ( first_value,last_value, number),表示创建一个从10first_value开始,到10last_value结束,包含number个数据元素的向量。
修改
- 删除与赋值
- 变维
矩阵的变维可以用符号“:”法和reshape函数法。reshape函数的调用形式如下。 r e s h a p e ( X , m , n ) \color{#FC5531}reshape(X,m,n) reshape(X,m,n):将已知矩阵变维成m行n列的矩阵。
- 变向
- 抽取
注意:matlab遵循以列优先的方式
运算
- 矩阵点乘(“ . ∗ \color{#FC5531}{.*} .∗”):矩阵中元素对应相乘, 要求矩阵元素要意义对应 \color{#FC5531}{要求矩阵元素要意义对应} 要求矩阵元素要意义对应。
- 矩阵的点积(又称数量级,内积):
d
o
t
(
a
,
b
)
\color{#FC5531}dot(a,b)
dot(a,b)即a·b。
eg:x=[1,2];y=[2,3];dot(x,y) = 5
- 矩阵的叉积(外积、向量积、叉乘或矢量积): c r o s s ( a , b ) \color{#FC5531}cross(a,b) cross(a,b)即aXb,且a与b必须是三维的
- 奇异值分解:
生成随机种子:rand(‘seed’,0)
4. 多项式
创建
-
直接输入:
构造带字符多项式的基本方法是直接输入,主要由26个英文字母及空格等一些特殊符号组成。eg:
'a*x^n+b*x^(n-1)'
-
函数向量:
构造带数值多项式最简单的方法就是直接输入向量。这种方法通过函数 poly2sym来实现。其调用格式如下:eg:
p=[3 -1 0 2 8]
root=[1,2]
poly2sym(p)
poly2(p)
%以跟的形式转换原系数
3x^4 - x^3 + 2x +8 1 -3 2
运算
-
乘法:多项式的乘法用函数 c o n v ( p 1 , p 2 ) \color{#FC5531}conv(p1,p2) conv(p1,p2)来实现,相当于执行两个数组的卷积
eg:
p1= [1:2]
p2= [2:3]
conv(p1,p2)
% (x+2)*(2x+3)
2 7 6 -
除法:多项式的除法用函数 d e c o n v ( p 1 , p 2 ) \color{#FC5531}deconv(p1,p2) deconv(p1,p2)来实现,相当于执行两个数组的解;卷
调用形式:[k,v]=deconv(p1,p2)
其中k返回的是多项式p1/p2的商,v是余式eg:
p1= [1:2]
p2= [2:3]
c = conv(p1,p2)
deconv(c,p1)
2 3 -
求导:多项式导数运算用函数 p o l y d e r ( p ) \color{#FC5531}polyder(p) polyder(p) 来实现
其中p为多项式的系数向量eg:
p=[2 3 8 -5 6]
s = poly2sym(p)
q = polyder(p)
8 9 16 -5
poly2sym(q)
5. 单元型变量(元组)
创建
- 赋值语句直接定义
在直接赋值过程中,与在矩阵的定义中使用中括号不同,单元型变量的定义需要使用大括号,而元素之间由逗号隔开。eg:
A='EDGO'
B=2
C=[1 2 3 4]
D= 3+4i
E={A,B,C,D}
1*4 cell - 利用元组函数 c e l l ( n ) \color{#FC5531}cell(n) cell(n),C = cell(n) 返回由空矩阵构成的 n×n 元胞数组
有关函数
6. 结构型变量
创建
结构型变量是根据属性名组织起来的不同数据类型的集合,可以包含不同的数据类型,用
s
t
r
u
c
t
(
n
)
\color{#FC5531}struct(n)
struct(n)来创建,调用格式如下:
eg:
m=struct{'color',{'red','black'},'number',{1,2}}
m
1*2 struct
color number
m(1)
color:‘red’ number:1
m(2).color
‘black’
有关函数
7. 文本文件创建
8. 符号矩阵
-
符号表达式与数值表达式转换用 e v a l ( ) \color{#FC5531}eval() eval()与 s y m ( ) \color{#FC5531}sym() sym()来实现
eg:
a = 0.25
p = sym(a)
1/4
eval(p)
0.2500
创建
- 直接创建
直接输入符号矩阵时,符号矩阵的每一行都要用方括号括起来,而且要保证同一列的各行元素字符串的长度相同,因此在较短的字符串中要插入空格来补齐长度,否则程序将会报错。 - 使用
s
y
m
(
)
\color{#FC5531}sym()
sym()函数
- 使用
syms x y z
即syms函数来创建,后直接跟符号
运算
eg:
syms x y
f=factor(x^3-1)
[x-1,x^2 +x +1]
expand(cos(x+y))
cos(x)*cos(y) - sin(x)sin(y)
simplify(sin(x)^2+cos(x)^2)
1
[n, d]=numden(x/y-y/x)
n=x^2 -y^2 d=x*y
horner(x^4-3*x^2+1)
x^2(x^2 - 3) + 1
9. 函数
创建
- 函数创建
function [输出参数] =myfun(输入参数)
函数体;
end
% 圆的面积和周长
function [s,c]= areaAndLen(r,p1)
s = pi * r.^2;
c =2 * pi * r;
end
- 匿名函数创建
% f =@(输入参数) 函数体。f:函数句柄
f = (x)x.^2;
f(2);
4
f([2,3]);
4 9
f1 = @(x,y)×.^2 + y.^2 +2*x.*y; %(x+y)^2;
f1(2,3)
25 - 匿名函数与函数的转换
方法一
f2= @fun;
f2(5);
25
方法二
f3 = @(x)fun(x);
f3(6);
36
function y = fun(x)
函数置于下方
y = x.^2;
end
10. 图形绘制
二维图形
plot() 函数实现图形绘制,其是以点连成线来绘图的
get() 函数实现查询当前窗口的所有属性
ezplot(fun,[xmin,xmax]) 绘制 fun(x) 在以下域上的图形:xmin < x < xmax,默认区间-2π < x < 2π
eg: function z = myfun(x,y,k)
z = x.^k - y.^k - 1;
ezplot(@(x,y)myfun(x,y,2))
fplot(函数表达式,绘 图区间),直接以曲线绘制函数,并可赋予区间
-
默认构建图形时会在同一个视窗,若构建下一个时,可能回覆盖,使用 hold on,开启图形保持功能 hold off,关闭图形保持功能;
x = linspace(e, 2*pi, 100);
y = sin(x);
y2 = cos(x);
polt(x,y)
hold on;
plot(x,y2);
hold off;
或者
polt(x,y,x,y2)
-
坐标标签 l a b e l ( ) \color{#FC5531}label() label(), 图例标签 l e g e n d ( [ P 1 , P 3 ] , { ′ f i r s t ′ , ′ t h i r d ′ } ) \color{#FC5531}legend([P1,P3],\{'first','third'\}) legend([P1,P3],{′first′,′third′}) ,标题标签 t i t l e ( ) \color{#FC5531}title() title();
legend({'cos(x)','cos(2x)'},'Location','southwest')
显示在西南方
-
绘制多副图 figure
-
f
i
g
u
r
e
(
N
a
m
e
,
V
a
l
u
e
)
\color{#FC5531}figure(Name,Value)
figure(Name,Value) :使用一个或多个名称-值对组参数修改图窗的属性。
例如,figure(‘Color’,‘white’) 将背景色设置为白色。 - f i g u r e ( n ) \color{#FC5531}figure(n) figure(n): 查找 Number 属性等于 n 的图窗,并将其作为当前图窗。如果不存在具有该属性值的图窗,MATLAB® 将创建一个新图窗并将其 Number 属性设置为 n。
figure; plot(x, y);
figure; plot(x, y2);
-
f
i
g
u
r
e
(
N
a
m
e
,
V
a
l
u
e
)
\color{#FC5531}figure(Name,Value)
figure(Name,Value) :使用一个或多个名称-值对组参数修改图窗的属性。
-
绘制子图 s u b p o l t ( ) \color{#FC5531}subpolt() subpolt()
% subplot(m,n,i): m行n列,第i个图形
subplot(1,2,1); plot(x, y);
subplot(1,2,2); plot(x, y2);
-
图形美化
f i l l ( x , y , ′ c o l o r ′ ) \color{#FC5531}fill(x,y,'color') fill(x,y,′color′)用指定的颜色填充数据(x,y)所构成的多边形。
t e x t ( x , y , ′ s t r i n g ′ ) \color{#FC5531}text(x,y,'string') text(x,y,′string′)在(x,y)所在位置放入字符串string
g t e x t ( ′ s t r i n g ′ ) \color{#FC5531}gtext('string') gtext(′string′)用鼠标来确定所放字符串的位置
g r i d \color{#FC5531}grid grid on:灰色实线;minor:灰色虚线
-
误差图 e r r o r b a r ( ) \color{#FC5531}errorbar() errorbar(),其方向默认为垂直
-
直方图 h i s t o g r a m ( x , n ) \color{#FC5531}histogram(x,n) histogram(x,n),基于x创建直方图,n为区间数量
-
散点图 s c a t t e r ( x , y ) \color{#FC5531}scatter(x,y) scatter(x,y) ,在向量×和y指定的位置创建一个但含圆形的散点图;其修饰同 polt()函数
-
(竖)条形图 b a r ( y ) \color{#FC5531}bar(y) bar(y) ,y 中的每个元素对应一个条形。
如果y是M x N矩阵,则bar创建每组包含N 个条形的M 个组。( b a r h ( y ) \color{#FC5531}barh(y) barh(y) 横条形图 ) -
针图 s t e m ( x , y , " f i l l e d " ) \color{#FC5531}stem(x,y,"filled") stem(x,y,"filled")填充圆形,类似于plot
-
阶梯图 s t a i r s ( x , y ) \color{#FC5531}stairs(x,y) stairs(x,y)
-
饼图 p i e ( x , e x p l o d e ) \color{#FC5531}pie(x , explode) pie(x,explode) 使用×中的数据绘制饼图。饼图的每个扇区代表×中的一个元素;
explode将扇区从饼图偏移一定位置eg:
x = [1 3 0.5 2.5 2];
explode = [0 1 0 1 0];
其中1表示裂开,0表示不裂开
pie(x,explode)
-
极坐标 p o l a r p l o t ( t h e t a , r h o ) \color{#FC5531}polarplot(theta , rho) polarplot(theta,rho)、
由theta
表示极角,单位为弧度
,rho
表示极径。theta和rho可以均为向量或矩阵,也可以一个向量一个矩阵,与plot类似。
-
极坐标与直角坐标转换
deg2rad (D)
-将角从以 度 为单位 转换 为以 弧度 为单位;
[theta,rho] = cart2pol(x,y)
可将二维笛卡尔坐标数组 x 和 y 的对应元素转换为极坐标 theta 和 rho;
D = rad2deg(R)
将 R 中每个元素的角单位从 弧度转换为度;
[x,y] = pol2cart(theta,rho)
将极坐标数组 theta 和 rho 的对应元素转换为二维笛卡尔坐标或 xy 坐标。 -
一副坐标系下纵坐标分左右,利用如下
y y a x i s \color{#FC5531}yyaxis yyaxis l e f t \color{#FC5531} left left 激活当前坐标区中与左侧 y 轴关联的一侧。后续图形命令的目标为左侧。
y y a x i s \color{#FC5531}yyaxis yyaxis r i g h t \color{#FC5531}right right激活当前坐标区中与右侧 y 轴关联的一侧。后续图形命令的目标为右侧。
c o l o r o r d e r \color{#FC5531}colororder colororder 函数设置色序x = linspace(0,10);
yl1 = sin(x);
yl2 = sin(x/2);
yyaxis left
plot(x,yl1)
hold on
使用 hold on 命令基于左侧 y 轴绘制两个线条。
plot(x,yl2)
yr1 = x;
yr2 = x.^2;
yyaxis right
基于右侧 y 轴绘制两个线条。hold 命令同时影响左侧和右侧 y 轴
plot(x,yr1)
plot(x,yr2)
hold off
cla
可以使激活那一侧的函数图像清除
三维图形
- m e s h ( ) \color{#FC5531}mesh() mesh(),绘制立体网状图
- s u r f ( ) \color{#FC5531}surf() surf(),绘制立体曲面图
- m e s h g r i d ( ) \color{#FC5531}meshgrid() meshgrid(),生成一系列网格坐标
-
s
t
e
m
3
\color{#FC5531}stem3
stem3,三维火柴杆图
三维函数应用1
三维函数应用2
11. 数列与极限
数列
-
s u m ( A ) \color{#FC5531}sum(A) sum(A)函数,数列求和
如果 A 是矩阵,则 sum(A) 将返回包含每列总和的行向量(即算每一列);sum(A,2) 是包含每一行总和的列向量(每一行)
S = sum(A,'all')
计算 A 的所有元素的总和
S = sum(___,outtype)
使用上述语法中的任何输入参数返回指定数据类型的总和。outtype 可以是 ‘default’、‘double’ 或 ‘native’。
S = sum(___,nanflag)
指定在上述任意语法的计算中包括还是忽略 NaN 值。sum(A,‘includenan’) 会在计算中包括所有 NaN 值,而sum(A,'omitnan')
等价于nansum()
则忽略这些值。 -
B = c u m s u m ( A ) \color{#FC5531}{B=cumsum(A)} B=cumsum(A):从 A 中的第一个其大小不等于 1 的数组维度开始返回 A 的累积和,同sum()
A = [1 4 7; 2 5 8; 3 6 9]
B = cumsum(A)
B = 3×3
1 4 7
3 9 15
6 15 24 -
Q = c u m t r a p z ( Y ) \color{#FC5531}{Q = cumtrapz(Y)} Q=cumtrapz(Y): 通过梯形法按单位间距计算 Y 的近似累积积分
-
B = p r o d ( a ) \color{#FC5531}{B= prod(a)} B=prod(a):求数组元素的乘积;其近乎与sum函数相同
极限与导数
diff()还可以求差分,即极限上▲y