Matlab学习

Matlab学习

Matlab基础

MATLAB的数据类型概述

数值型数据

通过转换函数创建整数类型

x=102;
y=102.49;
z=102.5;
xx=int32(x);
whos	%输出所有的变量以及值
who		%输出所有的变量名

取整函数

round:向接近的整数取整 0.5时向上取整

fix:向0取整

floor(a):向不大于a的最接近的整数取整

ceil(a):向不小于a的最接近的整数取整

复数相关运算函数

real(z):返回z的实部 imag(z):返回z的虚部

abs:返回z的幅度 angle(z):返回z的幅角

conj(z):返回z的共轭复数 complex(a,b):以a为实部,b为虚部创建复数

符号常量

ans:用来存储计算结果的默认变量名

pi:圆周率Π的双精度表示

i或j:用于复数单位

Inf或inf:无穷大,前面可加+或-

NaN:非数值量,产生于0/0 ∞/∞ (两个NaN大小不一样)

eps:容错量,非常接近于0,计算机上的值为2-52

date:当前日期

Realmin或realmin:MATLAB所能表示实数的最小绝对值

Realmax或realmax:MATLAB所能表示实数的最大绝对值

version:MATLAB版本信息

创建数组

1>工作区新建变量

2>编辑变量

3>工作区右键另存为导出

使用指令存储变量为文件:

save FileName v1 v2 -append 把变量v1,v2添加到filename.mat文件中

​ -ascii 把变量v1,v2添加到8位ASCII文件中

​ -ascii -double 把变量v1,v2添加到16位ASCII文件

把save改为load

示例

1>建立用户目录,使之成为当前目录,保存数据
>>mkdir ('c:\','my_dir')
>>cd c:\my_dir %使c:\my_dir成为当前目录
>>save saf X Y Z %选择内存中的X,Y,Z变量保存为saf.mat

2>清空内存,从saf.mat向内存装载变量Z
>>clear %清除内存中的全部变量
>>load saf Z %把saf.mat文件中的Z变量装入内存
>> who %检查内存中有什么变量

矩阵变换函数

fiplr:矩阵左右翻转 diag:产生或提取对角阵

flipud:矩阵上下翻转 tril:产生下三角

flipdim:矩阵特定维反转 triu:产生上三角

Rot90:矩阵反时针90度翻转

其他函数

mean 平均值 median 中位数

std 标准差 diff 相邻元素的差

sort 排序 length 个数

norm 欧式长度 sum 总和

prod 总乘积 dot 内积

cunsun 累计元素总和 cumprod 累计元素总乘积

cross 外积

向量与矩阵

直接输入法

向量名=[x1,x2,x3…]

直接输入法建立向量:

x=[3,5,-2,sqrt(8),pi/4,4+6i]

冒号表示法

向量名=a: step: b

a是向量的第一个元素,step是步长,b是向量的最后一个元素的界限

直接输入法建立矩阵

A=[
1 2 3
4 5 6
7 8 9
]

向量和矩阵的基本操作

点乘:R3=A.*B %同型矩阵点乘,矩阵的对应元素相乘

点幂:R4=A.^B %同型矩阵点幂,对矩阵A的每个元素求与B对应的幂次方

右除:R5=A./B %点右除,矩阵A的每个元素除以B对应的元素

左除:R6=A.\B %点左除,矩阵B的每个元素除以A对应的元素

标量级的基本函数

r1=sin(pi/6) %求sin(pi/6)

sind(30) %求sin30°

r3=fix(10*rand(3)) %向零方向取整,因为随机数每次运行结果不同

r4=mod([1:5],3) %求余运算

r5=floor(rand(3)*10-5)%向负无穷大方向取整

r6=sign(r5) %符号函数,矩阵元素大于0时为1,小于0时为-1,等于0时为0

向量级函数

A=round(10*rand(3,4)) %4舍5入取整

r1=max(A) %求每列的最大值

r3=min(A) %求每列的平均值

r4=mean(A,2) %求每行的平均值

R1=sort(A) %对每列排升序,若写成sort(A,2)则是对每行排升序

R2=sort(A,‘descend’) %对每列排降序,若写成sort(A,2,‘descend’)则是对每行排降序

B=(rand(3,4)>0.5) %rand函数构建3行4列元素为0或1的矩阵

r1=any(B) %判断每列是否全为0,若全为0则用0表示,否则用1

r1=all(B) %判断每列是否全为1,若全1则用1表示,否则用0

矩阵函数

A=ceil(10*rand(3,4)) %生成样例矩阵A,因随机函数导致每次运行不一样

R1=reshape(A,2,6) %把矩阵A按列方向排成一个序列,对该序列进行m行n列的生成

R2=rot90(A) %将矩阵逆时针旋转90°

R3=flipdim(R2,1) %对R2以水平方向作镜像

R4=flipdim(R3,2) %对R3以垂直方向作镜像

size(R4) %返回一个向量,记录矩阵A的行数和列数

R5=tril(R4) %抽取矩阵的下三角(包含对角)元素,其余补0

R6=triu(R4) %抽取矩阵的上三角元素(包含对角),其余补0

R7=transpose(R6) %矩阵的转置

X=7 7 3 6 1 7 0 2

index=find(X>5) %返回值大于5的下标值

Y=X(index) %返回X中对应index的索引值的值

向量的特殊运算

点积:r1=dot(a,b)

叉积: c=cross(a,b)

多项式及其函数

比如说f(x)=x3-10x2+3x+4,对应的向量为p=[1 -10 3 4]求多项式的根为r=roots§

给定一个根向量r,用poly函数可以生成多项式的系数poly®

当poly函数的参数是方阵时,获得的是方阵的特征多项式

对方阵特征多项式求根,可以获得特殊值

矩阵的特殊运算

  1. 矩阵的LU分解

lu函数将矩阵分解为两个三角矩阵的乘积,一个是下三角矩阵的置换,一个是上三角矩阵。矩阵的LU分解可用于简化矩阵的求逆运算、行列式计算及除法运算

  1. 矩阵的cholesky运算

用于对称正定矩阵,chol函数将一个矩阵A分解为一个上三角矩阵R

  1. 矩阵的QR分解

若A是n阶方程,则A可以分解为A=QR,其中Q是一个正交矩阵,R是一个上三角矩阵,比如[Q,R]=qr(A)

齐次线性方程组的求解

  1. 有理基

  2. 非齐次线性方程组的求解

A=[1 -1 -1 1;1 -1 1 -3;1 -1 -2 3]
b=[0 1 -1/2]
Z=[A b]								%增广矩阵Z
RA=rank(A)
RZ=rank(Z)
column=size(A,2)
format rat
if RA~=RZ
disp('方程组无解')
else if RA=column	%有唯一解
X=A\b
else
Te=zeros(column,1);	%初始化Ax=b的特解
ZJ=rref(Z);			%求得增广矩阵Z的行最简形
for i=1:RA
	for j=1:column
		if ZJ(i,j)==1	%找到每行的第一个1
		break;
		end;
	end;
	Te(j)=ZJ(i,end);	%bj用ZJ(i,end)表示
	end
	Te
end
end
符号计算

创建符号常量

sym('常量')

将数值转换成某种格式的符号常量

sym(常量,参数)
d:返回最接近的十进制数值(默认位数为32)
f:返回该符号值最接近的浮点表示
r:返回该符号值最接近的有理数型(为系统默认方式),可表示为p/q
e:返回最接近的带有机器浮点数误差的有理值

使用sym命令创建单个符号变量和表达式

sym 变量,参数

syms arg1 arg2…,参数

创建符号矩阵

sym(’[a b; c d]’)

syms a b c d

符号精度控制

digits(n) %设定默认的精度 n为所期望的有效位数

vpa(s,n) %将s表示为n位有效位数的符号对象

符号函数运算

eval(al) %函数eval可以得到符号变量的数值结果

符号极限、微积分和级数求和

limit(f,‘x’,0,‘right’) %函数、求极限的变量、趋近值、右极限

图像与图像处理

用函数plot画出sin2x在区间[0,8]上的图形

x=0:0.02:8;
y=sin(2*x);
plot(x,y);

绘制多条曲线

x=0:0.01:8;
y1=x.^2-3*x;
y2=cos(x.^2);
figure;		%用于创建新的图形窗口
plot(x,y1,x,y2)

颜色、线型和标记符号

颜色参数颜色线型参数线型标记符号标记
y-实线.
b:点线
g绿-.点画线+
m洋红虚线x
ws
cd
kp
rh
*

按不同颜色和线型绘图

x=0:0.1:4;
y1=0.4+sin(2*x);
y2=sin(x.^2);
figure;
plot(x,y1,'b-h',x,y2,'r--s')
三维曲线图
%绘制三维曲线图
x=0:0.01:30;
figure
plot3(sin(x),x,cos(x),'r');
grid;
text(0,0,0,'0')
title('Three Dimension')
xlabel('sin(x)'); ylabel('x'),zlabel('cos(x)');
三维曲面图

1> surf(X,Y,Z):以Z确定的曲面高度和颜色,按照X、Y形成的“格点”矩阵,创建一渐变的三维曲面

2>surf(X,Y,Z,C):C确定曲面颜色

sphere(n):生成球体坐标,其中n表示将整个球体坐标划分的网络数

绘制方程xe-x2-y2的曲面图

%产生一个以x为行,y为列的矩阵,而x、y是从-2开始到2,每间隔0.2记下一个数据
[x,y]=mershgrid(-2:.2,-2:.-2:2);
z=.x*exp(-x.^2-y.^2);
surf(x,y,z)

等高线
contour(z):把矩阵z中的值作为一个二维函数的值,等高曲线是一个平面的曲线,平面的高度v是MATLAB自动取的。

contour(x,y,z):(x,y)是平面z=0上点的坐标矩阵,z为相应点的高度值矩阵

contour(z,n):画出n条等高线

contour(z,v):在指定的高度v上画出等高线

[x,y]=meshgrid(-2:0.2:2,-2:0.2:2);
z=x.*exp(-x.^2-y.^2);
contour(x,y,z);
contour3(z,30);

条形图

bar(x,y,width,‘参数’):垂直条形图

barh(x,y,width,‘参数’):水平条形图

bar3(x,y,z,width,‘参数’):三位垂直条形图

bar3h(x,y,z,width,‘参数’):三维水平条形图

x=11:15;
y=[35 30 42
   32 31 45
   30 32 41
   34 38 42
   29 32 43];
%bar(x,y);
%bar3(x,y);
%barh(x,y);
bar3h(x,y)

直方图

hist(y,m) m是分段的个数,省略时默认为10;y可以是向量也可以是矩阵

hist(y,x)

绘制向量的直方图

x=-2:0.1:2;
y=randn(10,1);
hist(y,x);

饼状图

pie(x,explode,‘label’) x是向量,explode表示这部分是否从总图形中分离出来

pie3(x,explode,‘label’)

二位饼图的制作

x=[2 3 0.5 4.5 8];
explode=[0 1 0 1 0];
pie(x,explode);

子图函数subplot()

subplot(m,n,p):此函数表示将图形分成m*n个子区域,在第p个子区域绘制坐标并画图

其他绘图函数

mesh():类似于surf()函数,画曲面,不着色

meshc():既画曲线,又画等高线

meshz():既画曲线,又画边界线

box:有on和off两种,可控制边界的坐标刻度

plotyy():画双纵坐标图形

patch():画封闭图形

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值