matlab基础知识总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、linspace()函数
linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。
其中x1、x2、N分别为起始值、终止值、元素个数。
若缺省N,默认点数为100。
在matlab的命令窗口下输入help linspace或者doc linspace可以获得该函数的帮助信息。
例一:
在matlab的命令窗口输入:
X=linspace(1,100)
将产生从1到100步长为1的数组。
类似于在命令窗口中输入:X=[1:1:100]
在MATLAB中为什么输linspace(10,50,6)的时候其步进是8,而输入linspace(10,50,8)时,其步进为5点多的一个小数
linspace(x0,x1,n)
其中n代表的是点的数目,即分成n-1等分。
步长应当是(x1-x0)/(n-1)
二、格式:n=norm(A,p)
功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数
以下是Matlab中help norm 的解释
NORM Matrix or vector norm.
For matrices...
NORM(X) is the largest singular value of X, max(svd(X)).
NORM(X,2) is the same as NORM(X).
NORM(X,1) is the 1-norm of X, the largest column sum, = max(sum(abs(X))).
NORM(X,inf) is the infinity norm of X, the largest row sum, = max(sum(abs(X'))).
NORM(X,'fro') is the Frobenius norm, sqrt(sum(diag(X'*X))).
NORM(X,P) is available for matrix X only if P is 1, 2, inf or 'fro'. For vectors...
NORM(V,P) = sum(abs(V).^P)^(1/P).
NORM(V) = norm(V,2).
NORM(V,inf) = max(abs(V)).
1、如果A为矩阵 n=norm(A) 返回A的最大奇异值,即max(svd(A))
n=norm(A,p) 根据p的不同,返回不同的值
p 返回值
1 返回A中最大一列和,即max(sum(abs(A)))
2 返回A的最大奇异值,和n=norm(A)用法一样 inf 返回A中最大一行和,即max(sum(abs(A’)))‘fro’ A和A‘的积的对角线和的平方根,即sqrt(sum(diag(A'*A))
2、如果A为向量 norm(A,p) 返回向量A的p范数。
即返回
sum(abs(A).^p)^(1/p),对任意1<p<+∞. norm(A) 返回向量A的2范数,即等
价于norm(A,2)。
norm(A,inf) 返回max(abs(A)) norm(A,-inf) 返回
min(abs(A))
3、对于实数矩阵A’=A.’
复数矩阵A转置A.’; A的共轭转置A’
4、randn(N,M)的功能是产生一个N行M列的服从高斯分布的矩阵(注:randn为matlab自带的产生高斯分布的库函数)。
randn(N,M)的功能是产生一个N行M列的服从高斯分布的矩阵(注:randn为matlab自带的产生高斯分布的库函数)。
randn(N,M)的功能是产生一个N行M列的服从高斯分布的矩阵(注:randn为matlab自带的产生高斯分布的库函数)。
以下介绍利用Matlab产生均值为0,方差为1的符合正态分布的高斯随机数。
我们利用的函数为normrnd(a,b,c,d):产生均值为a、标准为b大小为cXd的随机矩阵,它有如下三种参数形式: R=normrnd(μ,σ)
R=normrnd(μ,σ):生成服从正态分布(μ参数代表均值,σ参数代表标准差)的随机数。
输入的向量或矩阵μ和σ必须形式相同,输出R也和它们形式相同。
标量输入将被扩展成和其它输入具有相同维数的矩阵。
R=normrnd(μ,σ,m)
R=norrmrnd(μ,σ,m):生成服从正态分布(μ参数代表均值,σ参数代表标准差)的随机数矩阵,矩阵的形式由m定义。
m是一个1×2向量,其中的两个元素分别代表返回值R中行与列的维数。
R=normrnd(μ,σ,m,n)
R=normrnd(μ,σ,m,n):生成m×n形式的正态分布的随机数矩阵。
其中μ为均值,σ为标准方差,m、n为矩阵大小;
5、hist(A,10)将A中数据等分为十个区间,返回每个区间内数据的均值及数目。
6、y = conj(x):返回复数z的幅角
其中x是一个n维的数值数组。
该调用将返回x中每个复数的共轭复数。
Real(z): 返回复数z的实部
Imag(z): 返回复数z的虚部
Abs(z): 返回复数z的幅度
Complex(a,b): 以a为实部,b为虚部创建复数
7、二维用法:zeros(m,n)或zeros(n)
功能:zeros(m,n)产生m×n的零矩阵,zeros(n)产生n×n的全0方阵。
n维用法:zeros(m,n,p,...) 或zeros([m n p ...])或zeros(m,n,p...,classname)功能:返回一个m×n×p×...的零矩阵。
注意:m, n, p,...必须是非负整数,负整数将被当做0看待。
当没有参数时classname时,产生的是标量零矩阵,有参数时产生指定类型的零矩阵,例如zeros(3,2,'uint8')。
8、利用Toeplitz 特性改善来波方向估计性能
toeplitz--生成托普利兹矩阵
【功能简介】生成托普利兹(Toeplitz)矩阵。
矩阵中,除第一行与第一列外,其他所有元素都与左上角相邻位置的元素相等,即T(i,j)=T(i-1,j-1)。
【语法格式】
(1).T=toeplitz(c,r)
生成非对称托普利兹矩阵,将c作为第一列,r作为第一行,若c(1)与r(1)不相等,则使用c(1)作为矩阵的第一个元素,同时打印一条警告信息。
(2).T=toeplitz(r)
生成对称的托普利兹矩阵,将r作为第一行与第一列。
9、awgn()函数:在某一信号中加入高斯白噪声
y = awgn(x,SNR) 在信号x中加入高斯白噪声。
信噪比SNR以dB为单位。
x 的强度假定为0dBW。
如果x是复数,就加入复噪声。
y = awgn(x,SNR,SIGPOWER) 如果SIGPOWER是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。
y = awgn(x,SNR,SIGPOWER,STATE) 重置RANDN的状态。
y = awgn(…,POWERTYPE) 指定SNR和SIGPOWER的单位。
POWERTYPE 可以是'dB'或'linear'。
如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。
如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。
10、自相关函数xcorr()
自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2的取值之间的相关程度.设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积.
r=xcorr(s,SCALEOPT)
SCALEOPT有
'biased' - scales the raw cross-correlation by 1/M.
'unbiased' - scales the raw correlation by 1/(M-abs(lags)).
'coeff' - normalizes the sequence so that the auto-correlations
at zero lag are identically 1.0.
'none' - no scaling (this is the default).
11、协方差矩阵
size:获取数组的行数和列数
length:数组长度(即行数或列数中的较大值)
numel:元素总个数。
s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。
如果在size函数的输入参数中再添加一项,并用1或2为该项赋值,则size将返回数组的行数或列数。
其中r=size(A,1)该语句返回的时数组A的行数,
c=size(A,2) 该语句返回的时数组A的列数。
n=numel(A)该语句返回数组中元素的总个数。
n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。
n=max(size(A):若A为非空数组,返回A的最大维数;若A为空数组,返回A 中最长的非0维数
12、复数x=a+b j
B)复数的绘图
(1)直角坐标图
plot函数
(2)极坐标图
Polar函数
调用格式:polar(theta,rho)其中theta为极坐标极值,rho为极坐标矢径
例:做出y=t+i*tsin(t) 的坐标图
t=0:0.01:2*pi;
y=t+i*t.*sin(t); %直角坐标表示
r=abs(y);
theta =angle(y); %极坐标表示
subplot(2,1,1);
plot(y) ; %绘制直角坐标图
title('直角坐标图');
subplot(2,1,2);
polar(theta,r) ; %绘制极坐标图
title('极坐标图');
13、fftshift()函数
fftshift的作用是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。
因为直接用fft得出的数据与频率不是对应的,可以用fftshift纠正过来。
Fft是一维傅里叶变换,也就是将时域信号转换为频域信号;fftshift是针对频域的,将FFT的DC分量移到频谱中心。
14、stem(y):绘制离散序列图
Stem(x,y)
Stem(……,’线端符号’)
Stem(……,’线型’)
Stem(……,’线端符号’,’线型’)
stem(y)和Stem(x,y)分别与plot(x),plot(x,y)的绘图规则相同,只是stem绘制的是离散序列图,序列线端为圆圈。
15、hold on/hold off
hold on是你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存都能看到。
hold off是你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,原来的图就看不到了,在轴上绘制的是新图,原图被替换了。
matlab中怎样将同一函数在不同自变量下的曲线画到同一张图中??
具体需要什么样的命令
有三种方法:
(1)用hold on和hold off,画好第一幅图后,用hold on 语句就可以接着在该坐标系下画出其他的曲线图形,画完后再用hold off结束
例如
% 函数y=sin(x)
x=linspace(0,pi,100);
y=sin(x)
plot(x,y,'*k');
hold on
x=linspace(2*pi,4*pi,100)
y=sin(x)
plot(x,y,'*k');
(2)建一个m行n列的矩阵,每一行代表一条曲线,然后再用一般的画图方法,如plot()函数就可以了
(3)可以直接将两条曲线直接写入plot函数的参数里,
例如
x1=linspace(0,pi,100);
x2=linspace(2*pi,4*pi,100)
% 函数y=sin(x)
y1=sin(x1);
y2=sin(x2);
plot(x1,y1,'*k',x2,y2,'sr');
16、矩阵拆分
A(:,j) 表示取A矩阵的第j列全部元素
A(i,:) 表示取A矩阵的第i行全部元素
A(i:i+m,:) 表示取A矩阵的第i~i+m行全部元素
A(:,k:k+m) 表示取A矩阵的第k~k+m列全部元素
17、axis([xmin .xmax, ymin ,ymax]) 分别表示x轴和y轴的坐标的刻度
❑title——给图形加标题
❑xlabel——给x轴加标注
❑ylabel——给y轴加标注
❑text——在图形指定位置加标注
❑gtext ——将标注加到图形任意位置
❑grid on/off——打开、关闭坐标网格线
❑legend——添加图例
❑axis ——控制坐标轴的刻度
❑axis equal———纵、横坐标采用等刻度
❑axis square———产生正方形坐标系
❑axis on /off ——————显示/取消坐标轴
❑box on ————加坐标边框
4.1.3 自适应采样绘图函数
⏹plot将外部的离散数据转化为图形。
数据点越多绘制的曲线越精确,越能反映数据的规律。
⏹fplot构建所需要绘制函数的数据,同时也可以绘图,精确程度由误差决定。
⏹[x,y] = fplot(‘fun’,lims,tol,’s’) %返回函数fun在x区间lims = [xmin xmax]的绘图点值。
fun用字符串表示。
4.1.4 隐函数绘图函数
❑ezplot(‘fun’) %绘制默认范围内的图形
❑ezplot(‘fun’,[min,max]) %绘制指定范围内的图形
❑ezplot(‘fun’,[xmin,xmax,ymin,ymax]) %绘制函数f(x,y)指定范围内的图形
❑ezplot(‘funx,funy’) %绘制默认范围的参数方程组x=x(t),y=y(t)的图形
❑ezplot(‘funx,funy’,[tmin,tmax]) %绘制指定范围的参数方程组x=x(t),y=y(t)的图形
默认范围是-2π到2π间的图形
Fun用字符串表示
4.2.1 三维图绘制基本函数
⏹plot3 %基本的三维图形指令。
⏹plot3(x,y,z) %x,y,z是长度相同的向量或维数相同的矩阵
⏹二维图形的所有基本特性对三维图形全都适用。
⏹plot3(x,y,z,’s’)
⏹plot3(x1,y1,z1,‘s1’, x2,y2,z2,‘s2’, …) %多线条绘图
⏹grid on/off %绘制三维网格
⏹text(x,y,z,‘string’)%三维图形标注
⏹子图和多窗口。
例如:t=0:0.1:8*pi;
x=sin(t);
y=cos(t);
z=t.^3;
subplot(1,2,1);
plot3(x,y,z);
4.2.2 三维网格图绘制
⏹三维网格图函数mesh可绘出在某一区间内的完整曲面
⏹mesh(z) %z为n×m的矩阵,x与y坐标为元素的下标。
⏹mesh(x,y,z) %x,y,z分别为三维空间的坐标位置。
⏹三维网格图绘制步骤
⏹生成坐标:[X,Y]=meshgrid(x,y)
⏹参数x和y为向量
⏹表达式点运算:Z=X.^2+Y.^2
⏹X,Y是n×m的矩阵,维数由向量尺寸决定
⏹默认37.5º,俯角30º
实例:x=-5:0.5:5;y=x;
[x,y]=meshgrid(x,y); %生成坐标
z=x.^2+y.^2; %点运算
mesh(x,y,z);
4.2.3 三维曲面图绘制
⏹曲面绘制函数surf绘制着色的三维曲面
⏹surf(X,Y,Z) %X,Y,Z为图形坐标向量
注:网格图线条有颜色,空挡是白色;曲面图线条
是黑色,空挡有颜色。
⏹带等高线的曲面图绘制函数surfc(X,Y,Z)
⏹被光照射带阴影的曲面图surfl(X,Y,Z)
比较:(1)x=-5:0.5:5;y=x;
[x,y]=meshgrid(x,y);
z=x.^2+y.^2;
subplot(2,1,1);
mesh(x,y,z);
subplot(2,1,2);
surf(x,y,z)
(2)[x,y,z]=peaks(30);
subplot(2,1,1);
surfc(x,y,z);
subplot(2,1,2);
-5
5
-5
5
50
-5
5
-5
5
50
-4
-2
02
4
-4
-2
2
4
-10
10
-4
-2
02
4
-4
-2
2
4
-10
10
surfl(x,y,z);
4.2.4 图形修饰命令
⏹colormap(MAP) %色图设定函数
⏹colorbar() %标注Z图例
⏹shading faceted / flat / interp%网格修饰
⏹hidden on/off%透视与消隐(网格图)
⏹view(az,el) % 视角修饰,az 为方位角,el 为俯视角,缺省值:az=-37.5;
el=30
⏹waterfall / meshz%水线修饰
⏹contour(Z,n) / contour3(Z,n) %绘制n条二维/三维等高线;
其中colormap(MAP)
⏹hsv %饱和值色图
⏹gray %线性灰度色图
⏹hot %暖色色图
⏹cool %冷色色图
⏹bone %兰色调灰色图
⏹copper %铜色色图
⏹pink %粉红色图
⏹prism %光谱色图
⏹jet %饱和值色图II
⏹flag %红,白,蓝交替色图
5.1.1 一维插值
⏹单变量函数f(x)的数值插值问题称为一维插值。
⏹函数interp1
❑Y1=interp1(X,Y,X1,‘method’) %计算函数在X1处的值Y1,X、Y和X1均为向量
❑method
⏹linear:线性插值(默认)
⏹nearest:最近点插值。
⏹cubic:3次多项式插值。
⏹spline:3次样条插值。
5.1.2 二维插值
⏹对双变量函数z=f(x,y)进行插值
⏹函数interp2
❑Z1 = interp2( X,Y,Z,X1,Y1,'method' )
⏹其中X、Y是两个向量(矩阵),分别描述两个参数的采样
点,Z是与参数采样点对应的函数值。
⏹X1、Y1描述欲插值的点。
⏹Z1是根据相应的插值方法得到的插值结果。
❑method的取值与一维插值函数相同。
5.2 曲线拟合
⏹目的:用一个较简单的函数去逼近一个复杂的或未知的函数。
⏹MATLAB曲线拟合的最优标准是采用常见的最小二乘原理,所构造的函
数是一个次数小于插值节点个数的多项式。
⏹曲线拟合的最小二乘原理,就是使上述拟合多项式在各节点处的偏差
g(xi)-yi的平方和达到最小。
⏹命令格式:[g,t]=polyfit(X,Y,n),结果g为多项式系数向量,t为误差向量,
n为多项式次数。
5.3.1 最大值和最小值
⏹max(A):
❑A是向量,则返回向量A的最大值。
❑A中包含复数元素,则按模取最大值。
❑A是矩阵,则返回一个行向量(每一列的最大值)。
⏹[Y,U] = max(A) %A是向量,则返回向量A的最大值存入Y,最大值的序
号存入U。
如果A中包含复数元素,则按模取最大值。
如果A是矩阵,则Y向量记录A的每列的最大值,U向量记录每列最大值的行号。
⏹max(A,[ ],dim) %仅用于矩阵。
dim取1或2:取1时,该函数和max(A)
完全相同;取2时,返回一个列向量,数据对应每行的最大值。