Matlab 第四章

合集下载

MATLAB-第4章

MATLAB-第4章

v
i 1
n
2 i


max { vi } 。
1 ≤i ≤n
设 A 是一个 m ×n 的矩阵,矩阵的 3 种常用范数如下。 1-范数: A 1 max { aij } 。
1 ≤ j ≤n i 1 m
2-范数: A 2 1 ,其中 λ 1 为 A'A 最大特征值。 ∞-范数: A max { aij } 。
【例4.6】先建立5 × 5矩阵A,然后将A的第一行元素乘以1, 第二行乘以2,…,第五行乘以5。 用一个对角矩阵左乘一个矩阵时,相当于用对角阵的第一个 元素乘以该矩阵的第一行,用对角阵的第二个元素乘以该 矩阵的第二行……依此类推,因此,只需按要求构造一个 对角矩阵D,并用D左乘A即可。命令如下: A=[1:5;2:6;3:7;4:8;5:9] D=diag(1:5); D*A %用D左乘A,对A的每行乘以一个指定常数
(2)构造对角矩阵 设V为具有m个元素的向量,diag(V,k)的功能是产生一个 n × n(n = m + k|)对角阵,其第k条对角线的元素即为 向量V的元素。 例如: diag(1:3,-1) ans = 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 省略k时,相当于k为0,其主对角线元素即为向量V的元素。
2.矩阵的秩与迹 (1)矩阵的秩 rank(A) (2)矩阵的迹 矩阵的迹即矩阵的对角线元素之和。 trace(A)。
3.向量和矩阵的范数
设向量 V = (v1 ,v2 ,…,vn ),向量的 3 种常用范数如下。 1-范数: V 2-范数: V ? -范数: V
1
vi 。
i 1
n
2

3.矩阵的转置 所谓转置,即把源矩阵的第一行变成目标矩阵第一列,第二 行变成第二列……依此类推。显然,一个m行n列的矩阵 经过转置运算后,变成一个n行m列的矩阵。MATLAB中, 转置运算符是单撇号(')。

MATLAB-第四章

MATLAB-第四章
三、函数相关知识
3 变量的作用域
tips:尽量不使用全局变量! tips
第四章 MATLAB的编程基础
三、函数相关知识
4 函数的参数传递
按值传递机制
第四章 MATLAB的编程基础
三、函数相关知识
4 函数的参数传递
按值传递机制:当一个函数调用发生时, 按值传递机制:当一个函数调用发生时, MATLAB 将会复制实参生成一个副本,然后 将会复制实参生成一个副本, 把它们传递给函数。这次复制是非常重要的, 把它们传递给函数。这次复制是非常重要的, 因为它意味着虽然函数修改了输入参数, 因为它意味着虽然函数修改了输入参数,但 它并没有影响到调用者的原值。 它并没有影响到调用者的原值。 防止了因函数修改变量而导致的严重错误。 防止了因函数修改变量而导致的严重错误。
while 表达式 循环体 end
例:使用while循环计算1+2+3+…+100 使用while循环计算1+2+3+…+100 while循环计算
第四章 MATLAB的编程基础
一、MATLAB的三种控制结构
clear sum=0; i=0; while i<100 i=i+1; sum=sum+i; end sum
第四章 MATLAB的编程基础
三、函数相关知识
4 函数的参数传递 sample.m function out = sample(a, b)
fprintf('In Sample,before compute: a = %f, b = %f \n',a,b);
第四章 MATLAB的编程基础
二、其他流程控制语句 1 . break 和 continue语句 * break语句用于立即跳出含该 语句用于立即跳出含该break语 语句用于立即跳出含该 语 句的循环语句。 句的循环语句。 * continue语句用于提前结束当前循环。 语句用于提前结束当前循环。 语句用于提前结束当前循环

MATLAB第四章

MATLAB第四章

‘unreal’
非“实”符号变量。
调用格式4:syms(‘a1’,’a2’,’a3’) 功能:把字符串a定义为基本符号对象。 另外,格式4的简洁形式如下:syms a1 a2 a3 例1:比较符号常数形成的差异 >> a=[6,1/6,sqrt(2),pi/3-1] a= %为数值常数
6.0000 0.1667 1.4142 0.0472
第四章 符号计算目录
§4-1 在线帮助和系统演示 §4-2 创建和使用符号对象 §4-3 运算符 §4-4 微积分 §4-5线性代数 §4-6符号计算在控制理论中的应用 §4-7微分方程求解 §4-8约当标准型
第四章 符号计算
前一章介绍了数值计算,它的操作对象都有确定的数值,如果 未对某个变量赋值而执行命令,MATLAB则会给出错误信息。 如: >> clear >> A=[1 1 1;x 3 4] %在数值计算中,x没赋值 ??? Undefined function or variable 'x'. 如果把它们看作符号计算,则不会出现错误信息。 如: >> A=sym('[1 1 1;x 3 4]') A= [ 1, 1, 1] [ x, 3, 4]
end
end
使用M文件来创建符号函数是比较方便的。 >> genhilb(5)
ans = [ 1/(2-t), [ 1/(3-t), [ 1/(4-t), [ 1/(5-t), [ 1/(6-t),
1/(3-t), 1/(4-t), 1/(5-t), 1/(6-t), 1/(7-t),
1/(4-t), 1/(5-t), 1/(6-t), 1/(7-t), 1/(8-t),

matlab第四章课件

matlab第四章课件

4.1.1 M文件的分类
M文件是由若干 Matlab 命令组合在一起构成的,它可 以完成某些操作,也可以实现某种算法
事实上,Matlab 提供的内部函数以及各种工具箱,都是利用 Matlab 语言编写的 M文件 用户也可以结合自己的工作需要,开发自己的程序或工具箱
M文件根据调用方式的不同可以分为两类: Script file:命令文件/脚本文件 Function file:函数文件
例2 输入x,y的值,并将它们的值互换后输出(swap.m)。 x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x); disp(y); 例3 求一元二次方程ax2 +bx+c=0的根(root.m)。 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
例如:
s=0; a=[12 13 14;15 16 17;18 19 20;21 22 23] for k=a s=s+k; end disp(s); 该程序的功能是求矩阵各行元素之和,执行结果是: 39 48 57 66
while语句
while expr (条件) statement(循环体语句) end 若expr成立,则执行循环体的内容,执行后 再判断条件是否为真,如果不成立则跳出循环体。

[工学]第4章matlab

[工学]第4章matlab
其中,参数x是输入信号向量,b和a差分方程的系数向量, 即 b [b0 , b1 , , bM ], a [a0 , a1 , , aN ] 要求 a0 1 ,xi是等效初始条件的输入向量,由函数 filtic产生,调用格式如下 xi=filtic(b,a,ys,xs); 其中,ys和xs是初始条件向量,即
MATLAB数字信号处理
离散时间系统
0.5n , n 0 h(n) 0.5n u(n) n0 0,
(b)将差分方程改为 y(n 1) 2 y(n) 2 x(n) 令输入 x(n) (n) ,则有
h(1) 2h(0) 2 (0) 2
h(2) 2h(1) 2 (1) 22
ay1 (n) by2 (n) T[ax1 (n) bx2 (n)]
2)时不变系统
离散时间时不变系统是指系统对输入信号的响应与信号 加于系统的时间无关,或者说输入序列的移位或延迟引起输 出序列相同的移位或延迟。假设系统对输入x(n)的响应为 y(n),即
MATLAB数字信号处理
离散时间系统
x ( n) h( n)
y ( n)
等价
h( n)
x ( n)
y ( n)
2)结合律
x(n) h1 (n) h2 (n) [ x(n) h1 (n)] h2 (n) x(n) [h1 (n) h2 (n)]
MATLAB数字信号处理
离散时间系统
即,一个序列先后通过两个单位冲激响应分别为h1(n) 和h2(n)的线性时不变系统,等效于通过一个线性时不变系 统,其单位冲激响应h(n)为h1(n)和h2(n)的线性卷积.示意 图如下.
第4章 离散时间系统和Z变换

Matlab北航教程第四章

Matlab北航教程第四章
[B,A]=butter(n,w0):滤波器设计 y=filter(B,A,x):对信号x进行滤波
4.6_3
CH4.7 系统分析 S_ss=ss(A,B,C,D):利用状态方程创建LTI S_zpk=zpk(Z,P,K) :利用零极点增益创建LTI S_tf=tf(num,den) :利用传递函数创建LTI [A,B,C,D]=ssdata(S_lti) [Z,P,K]=zpkdata(S_lti) [num,den]=tfdata(S_lti)
[x,resnorm,residual,exitflag]= lsqnonlin(fun,x0): 基于Gauss-Newton方法求解
min ( f (x) f1(x)2 f2 (x)2 fm (x)2 ) x
[x,resnorm,residual,exitflag] = lsqcurvefit(fun,x0,xdata,ydata) 非线性最小二乘曲线拟合
伪逆:B=pinv(A)
满秩分解 可利用rref指令完成
司楚尔(Schur)分解: [U R] = schur(A)
乔列斯基(Cholesky)分解:R = chol(X) R’*R=X
[R,p] = chol(X) 利用p来判断R是否为正定,p=0则X正定
线性方程组的解 一、行列式、逆、恰定方程 det(A) inv(A) x=inv(A)*b x=A\b 求解Ax=b,例4.1-1 二、最小二乘问题 对超定问题Ax=b有三种方法,4.1-2 x=inv(trans(A)A) trans(A)b x=pinv(A)*b x=A\b
CH4.2 矩阵的一些运算 加、减、乘
trace(A) rank(A)
kron(A,B) norm(A,flag) cond(A)

matlab第4章

matlab第4章

行向量元素为按降幂排列的多项式系数。
1.多项式乘法函数 conv ( )
格式:C= conv (A, B) %求多项式A和B的乘积
A、B是两个多项式的系数向量,按降幂排列。 conv( ) 把两个多项式相乘合并成一个多项式。
2
p1 2s 3;
2
p2 s 2 4
3 2
A (2s 3)(s 4) 2s 3s 8s 12
x:操作点处的状态向量
u:操作点处的输入向量
x,u缺省值为0。
20
( s 1)(s 2 2s 6) 2 【例4.4】 求传递函数 G(s) 2 s (s 3)(s 3 2s 2 3s 4)
的分子和分母多项式,并求传递函数的特征 根。
21
% num 分子多项式 % conv( ) 采用嵌套形式
G (s)
5s 3 s 3 6 s 2 11s 6
13
3.部分分式展开函数residue ( ) 功能:对两个多项式的比进行部分展开。 格式:[r, p, k]=residue(b, a) 求B(s)/A(s)的部分分式展开式 向量b和a是按s降幂排列的多项式系数。
14
B( s) bn s n bn1s n1 ...b0 F ( s) A( s) an s n an1s n1 ...a0
38
2.并联 G(s)=G1(s)+G2(s) 模型并联函数 parallel 格式:[num, den]=parallel(num1, den1, num2, den2) num1, den1:G1(s) 的分子、分母多项式 num2, den2:G2(s)的分子、分母多项式 num, den:G(s) 的分子、分母多项式

第4章 MATLAB编程基础

第4章 MATLAB编程基础

(3)使用C-MEX文件:在必须使用for或 while循环体时,为了提高执行效率,可以将 循环部分的代码转化为C-MEX文件。 (4)尽量使用函数文件:在MATLAB中,函 数文件的效率一般比脚本文件的效率要高, 这是由于函数文件有自己的工作空间,执行 一次后仅保存程序运行必需的变量,并将函 数编译成伪代码,下次调用时提高了效率。
例:根据用户要求找出数组x中的最大值、最 小值或所有元素的和。
t=[0:100];x=exp(-t).*sin(t); %给定数组x require=input('Type min,max,or sum.','s') %用户输入要求 require=lower(require); switch require case 'min' %分支判断通过比较字符串完 成 minimum=min(x) case 'max' maximum=max(x) case 'sum' total=sum(x) otherwise disp('You have not entered a proper requirement') end
例:利用for循环求1!+2!+3!+ +5!的值
sum=0; for i=1:5 pdr=1; for k=1:i pdr=pdr*k; end sum=sum+pdr; end
e x 1 x x 2 2 x3 6 例:找出近似级数 中误差大于1%之前的最大的x值(精确到小数点后两
垂直条形图 水平条形图
误差条形图 y轴对数刻度 坐标
commet stairs
rose compass

第四章MATLAB的可视化功能

第四章MATLAB的可视化功能

第四章MATLAB的可视化功能MATLAB是一种高级计算机语言和环境,非常适合进行科学计算和数据可视化。

它具有丰富的绘图和可视化功能,能够帮助用户更好地理解和展示数据。

MATLAB的可视化功能很强大,可以通过简单的命令和函数来创建各种类型的图表。

以下是MATLAB的一些主要可视化功能:2.散点图:散点图用于显示两个变量之间的关系,可以在二维空间中绘制离散的数据点。

MATLAB提供了多种散点图的选项,可以调整点的大小、形状和颜色。

3.条形图:条形图用于比较不同类别之间的数值大小,常用于展示离散数据。

MATLAB可以生成水平或垂直的条形图,用户可以自定义条的宽度、颜色和填充。

5.曲线图:曲线图用于显示连续数据的变化趋势,可以绘制平滑的曲线并描绘出趋势。

MATLAB可以创建简单的曲线图,还可以进行数据拟合和曲线平滑处理。

7.3D图形:MATLAB可以创建三维图形来显示数据的分布和关系,如三维线形图、散点图和曲面图。

用户可以旋转、缩放和平移图形,以查看不同角度和视角的数据。

8.动态可视化:MATLAB还支持动态可视化,可以通过对数据进行实时更新和交互来展示数据的变化。

用户可以创建动画、交互式图形和图表,并添加控件和输入。

MATLAB还提供了许多其他的可视化功能,如绘制轮廓图、热图、雷达图、网格图、直方图等。

用户可以使用MATLAB的绘图函数和工具箱,轻松地创建专业、高质量的图形和可视化效果。

除了绘图功能,MATLAB还提供了一些数据导入和处理的工具,可以轻松从文件、数据库或其他数据源中导入数据,并进行处理和清洗。

用户还可以使用MATLAB的统计函数和工具进行数据分析和可视化。

综上所述,MATLAB的可视化功能非常强大,可以帮助用户更好地理解和展示数据。

无论是进行科学研究、数据分析还是学术教学,MATLAB 的可视化功能都能提供有力的支持。

MATLAB课件第四章

MATLAB课件第四章
x(m)=[ ]; end
x
程序流控制命令
Input命令
input命令提示用户从键盘输入数值,字符串或表达 式,并接受其输入。
常用格式:a=input(‘please input a number:’)
disp命令
disp命令将表达式执行结果显示在屏幕上 常用格式: disp(x)
例:编写函数文件mmin,使该文件输出两个变量,第一 一个变量返回矩阵中的单个最小值。第二个输出参量, 返回单个最小值的行和列的下标。
function [m , i]=mmin(a) % MMIN Matrix minimum value. % MMIN(A) returns the minimum value in the matrix A % [M,I] = MMIN(A) in addition returns the indices of % the minimum value in I = [row col]. % Copyright (c) 1996 by Prentice Hall,Inc. if nargout==2, % return indices [m , i]=min(a) ; [m , ic]=min(m) ; i=[i(ic) ic] ; else m=min(min(a)); end
linspace函数
function y = linspace(d1, d2, n) %LINSPACE Linearly spaced vector. % LINSPACE(X1, X2) generates a row vector of




100 linearly % equally spaced points between X1 and X2. if nargin == 2 n = 100; end y = [d1+(0:n-2)*(d2-d1)/(floor(n)-1) d2];

《MATLAB程序设计》第4章数组及应用

《MATLAB程序设计》第4章数组及应用
数组在内 存中的地 址
0x0012FF68 a[0] 0x0012FF6C a[1] 0x0012FF70 a[2] 0x0012FF74 a[3]
数组元素
0x0012FF78 a[4]
0x0012FF7C a[5]
8
一维数组在内存中的存储形式
说明:
(1)数组名a表示内存首地址,是地址常量。
(2)数组a中每个数组元素占的内存空间根据 数组类型确定,整个数组占的内存为:数组元 素个数乘以每个元素所占内存空间如: int a[10]; 4×10=40 float b[20]; 4×20=80 double c[5]; 8×5=40 char d[8]; 1×8=8
第4章 数组
教学内容
数组的定义及应用
字符串处理函数
几个常用算法:排序算法(选择排序、
冒泡排序)
1
第4章 数组
重点、难点
数组的定义及应用
常用算法的设计(选择排序、
冒泡排序)
2
第4章 数组
教学目标
熟练掌握数组的定义及应用
掌握字符数组的定义及应用
掌握常用的字符串处理函数
熟练掌握几个常用算法:排序
算法(选择排序、冒泡排序)
分析:所谓转置就是将矩阵的行列互换,即将 a矩阵 的a[i][j]元素变成b矩阵的b[j][i]。
24
#include <iostream> using namespace std; int main() { int a[3][4] ={{1,2,3,4},{3,4,5,6},{5,6,7,8}}; int b[4][3],i,j; for(i=0;i<3;i++) //输出二维数组a[3][4] { for(j=0;j<4;j++) cout<<a[i][j]<<" "; cout<<endl; } for(i=0;i<4;i++) //将矩阵a转置给矩阵b for(j=0;j<3;j++) b[i][j]=a[j][i]; for(i=0;i<4;i++) //输出二维数组b[4][3] { for(j=0;j<3;j++) cout<<b[i][j]<<" "; cout<<endl; } return 0;}

Matlab第四章详细讲解

Matlab第四章详细讲解
v21 v2 = v22
v11 v21 V = v12 v22
λ 1 v11 A .v1 = λ 1 v1 = λ 1 v12
λ 2 v 21 A.v 2 = λ 2 v 2 = λ 2 v 22
A .v1
A .v 2
a11 a12 v11 v21 a11v11 + a12v12 a11v21 + a12v22 A*V = v v = a v + a v a v + a v a21 a22 12 22 21 11 22 12 21 21 22 22
2 − at
f ( t ) = (sin
t )e
−b=fzero(fun ,x0 ,option,p1,p2)
%(1)使用字符串表示被处理函数 P1=0.1;P2=0.5;
%按泛函指令要求,这里参数必须用P1,P2表示
y_C='sin(x).^2.*exp(-P1*x)-P2*abs(x)';
1、求函数的零点 (1)字符串表达式 q=quad(fun,a,b) 2、数值积分 (2)内联函数 3、解微分方程 q=quadl(fun,a,b) (3)“M函数文件”的函数句柄
[t,y]=ode45(fun ,tspan,y0)
4.3.1 求函数的零点
例:求以下函数的零点。
零点初始 猜测值
向函数fun传 递的参数
4.4 多项式和卷积
4、多项式的根
功能:计算多 项式P的根。
R=roots(P)
p1 x + p2 x
n
n −1
+ ... + pn x + p
-27 ];

第4章MATLAB程序设计

第4章MATLAB程序设计

例 求一个值n,使n!最大但小于1050。 MATLAB程序如下: %初始化 r=1;k=1; 执行后结果如下: %做循环 The 41!Is while r<1e50 3.345253e+049 r=r*k; k=k+1; end k=k-1;r=r/k;k=k-1; % 输出结果 disp(['The',num2str(k),'!is',num2str(r)])
4.2.3 循环结构 for 循环:可完成指定次重复的循环,且在循环开 始之前,就知道代码重复的次数。
while 循环:while语句可完成不定次重复的循 环,与for语句不同,每次循环前要先判断条件 是否满足,再决定循环是否进行。
例 利用rand函数产生10个随机数,然后利用嵌套 for循环进行从小到大排序。
2 1.5 1 0.5 0 150 100 50
然后通过调用函数fun计算出z, 并利用mesh绘制出网格线。 编写的脚本文件如下: % 坐标系准备 x=[0:.02:2]; y=[-2:.02:0]; % 调用函数计算函数值 z=fun(x,y); % 绘图 figure mesh(z)
150 100 50
4.3.2 函数的调用 函数调用的一般格式如下: [输出实参表] = 函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺 序、个数,应与函数定义时形参的顺序、 个数一致,否则会出错。函数调用时,先 将实参传递给相应的形参,从而实现参数 传递,然后再执行函数的功能。
例 对于函数
z ( x 1)2 ( y 1)2
fprintf函数中,format字符中常常会使用到一些特 殊字符来灵活的实现一些显示功能 format string 结果 %d %e %f %g 把值作为整数来处理 用科学记数法来显示数据 用于格式化浮点数,并显示这个 数 用科学记数格式,或浮点数格式, 根据那个表示的数位短,显示那 个 转到新的一行

matlab第四章

matlab第四章

30
clear all;close all; [x0,y0,z0]=sphere(30); x=2*x0; y=2*y0;z=2*z0; surf(x0,y0,z0); shading interp %产生2倍半径的球面三维坐标 %画球面图 %插值平滑 %画球面网格图 %设置色图 %产生透视 %产生单位球面的三维坐标
subplot(1,2,2) [x,y,z] = peaks(30); surf(x,y,z); shading flat; title (‘经平滑的表面图’);
peaks: Matlab内置的函数,返回一个山峰形状的三维坐 标数据。 用于演示三维的绘图,比如网格图、曲面图等。
peaks(n) [X,Y,Z] = peaks

>> y=rand(5,3); >> subplot(1,3,1); >> bar(y); >> subplot(1,3,2);
>> bar3(y,'group'); >> subplot(1,3,3); >> bar(y,'stack');
(2) 面积图(填充图)
area(x,y,'属性名1',属性值1,…)
教材P214
shading flat: 将每个网格片用同一个颜色进行着色,且网格线也用相应 的颜色,从而使得图形表面显得更加光滑。

shading interp: 在网格片内采用颜色插值处理,使片与片之间的颜色过 渡很平缓,得出的表面图显得最光滑。

subplot(1,2,1) [x,y,z] = peaks(30); surf(x,y,z); title (‘未经平滑的表面图’);

MATLAB第四章(刘卫国编)

MATLAB第四章(刘卫国编)

25
例4.9 求定积分。 以梯形法为例,程序如下: a=0;b=3*pi; n=1000; h=(b-a)/n; x=a; s=0; f0=exp(-0.5*x)*sin(x+pi/6); for i=1:n x=x+h; f1=exp(-0.5*x)*sin(x+pi/6); s=s+(f0+f1)*h/2; f0=f1; end s

例4.13 求[100,200]之间第一个能被21整除 的整数。 程序如下: for n=100:200 if rem(n,21)~=0 continue end break end n
2
例4.1 建立一个命令文件将变量a,b的值互换,然后 运行该命令文件。 程序1: 首先建立命令文件并以文件名exch.m存盘: clear; a=1:10; b=[11,12,13,14;15,16,17,18]; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中输入exch,将会执行 该命令文件。
16
当表达式的值等于表达式1的值时,执行 语句组1, 当表达式的值等于表达式2的值时,执行 语句组2,…, 当表达式的值等于表达式m的值时,执 行语句组m, 当表达式的值不等于case所列的表达式 的值时,执行语句组n。 当任意一个分支的语句执行完后,直接 执行switch语句的下一句。
17
例4.5 某商场对顾客所购买的商品实行打折 销售,标准如下(商品价格用price来表示): price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。

第4章 MATLAB 绘图

第4章 MATLAB 绘图

4.图例标注
菜单Insert---legend 命令legend('string1','string2',...)
4.1.6 一个图形窗口多个子图的绘制
subplot(m,n,i)把图形窗口分为m*n个子图,并在第i个子图 中画图 例 4-11 在同一坐标系中画出两个函数,y=cos2x,y=sinxsin6x 的图形,自变量的范围为0≤ x ≤π,函数y=cos2x用红色星号,函数 y=sinxsin6x用蓝色实线,并加图名、坐标轴、图形、图例标注 解 MATLAB命令为: x=0:pi/50:pi; y1=cos(2*x);y2=sin(x).*sin(6*x); plot(x,y1,'r*',x,y2,'b-'),grid on title(‘曲线y1=cos(2x)曲线y2=sin(x)sin(6x)') xlabel('x轴'),ylabel('y轴') gtext('y1=cos(2x)'),gtext('y2=sin(x)sin(6x)') legend('y1=cos(2x)','y2=sin(x)sin(6x)')
group 8 6 4 2 0 10 30 20
stack
1
2
3
4 stack
5
6
0
1
2
3
4 stack
5
6
8 6 5 4 3 2 1 0 10 20 30 6 4 2 0
其它特殊绘图略(见教科书 )
1
2
3
4
5
6
4.3 三维曲线绘图

《MATLAB实践教程》课件第4章

《MATLAB实践教程》课件第4章
表达式[L, U]=lu(A)给出矩阵A的LU分解,用A-L*U验 证分解结果的正确性。程序如下:
clc; clear all; A=[3 -2 -0.9 0; -2 4 1 0; 0 0 -1 0; -0.5 -0.5 0.1 1] [L,U]=lu(A) E=A-L*U %计算LU分解的误差
第4单元 MATLAB典型应用
E1=A*X1-X1*lambda1
%计算特征方程误差
E2=A*X2-B*X2*lambda2
%计算广义特征方程误差
程序执行结果如下:
A=
3.0000 -2.0000 -0.9000
0
-2.0000 4.0000 1.0000
0
0
0 -1.0000
0
-0.5000 -0.5000 0.1000 1.0000
x p
表征x的大小。矩阵A的p范数
A p

征矢量变换Ax范数与矢量x范数的最大比值。矢量范数和矩
阵范数分别定义如下:
1
x
p
n
i1
x
p
p
Ax
A max p
p
x
x p
第4单元 MATLAB典型应用
norm(x,p)函数给出矢量x的p范数,norm(A,p)函数给出矩阵A 的p范数,程序如下:
表4-1 时间和响应的测定结果
t
0
0.3
0.8
1.1
1.6
2.3
y
0.82
0.72
0.63
0.60
0.55
0.50
c1c1cc2e2e0.03
0.82 0.72
c1 c1
c2e0.8 c2e1.1

Matlab基础第四章

Matlab基础第四章
注意:以每列向量为纵坐标画一条曲线,横坐标自动生成。
4.1二维曲线的绘制
4. plot(x,y)绘制混合式曲线
当plot(x,y)命令中的参数x和y是向量或矩阵时,分别有以下几 种情况:
(1)如果x是向量,而y是矩阵,则x的长度与矩阵y的
行数或列数必须相等,如果x的长度与y的行数相等,则向量x与 矩阵y的每列向量对应画一条曲线;如果x的长度与y的列数相等 ,向量x与y的每行向量画一条曲线,如果y是方阵,则x和y的行 数和列数都相等,将向量x与矩阵y的每列向量画一条曲线;
【例】 x=0:0.1:20*pi; plot3(x,sin(x),cos(x)) %按系统默认设置绘图
4.3 对数坐标和极坐标图
1. 对数坐标图形 语法:semilogx(x,y,'参数') %绘制x为对数坐标的曲线 semilogy(x,y,‘参数’) %绘制y为对数坐标的曲线 loglog(x,y,'参数') %绘制x、y都为对数坐标的曲线
2 3 4
5
图形注释: 图名、坐标名、图例、文字说明
4.1.3 多个图形绘制的方法
1. 指定图形窗口 figure(n)
%产生新图形窗口 说明:如果该窗口不存在,则产生新图形窗口并设置为当前图 形窗口,该窗口名为“Figure No.n”,而不关闭其它窗口。
2. 同一窗口多个子图 subplot(m,n,k)
: -. --
语法: plot(x,y,’s’)
说明:s为类型说明字符串参数;s字符串可以是线段类型、颜色和数据点形 三种类型的符号之数据点形
【例】用不同线段类型、颜色和数据 点形画出sinx和cosx曲线,如图所示。 x=0:0.1:2*pi; plot(x,sin(x),'r-.') %用红色点划线画出曲线 hold on plot(x,cos(x),'b:o') %用蓝色圆圈画出曲线,用点线连接

matlab(第四章 函数和方程)

matlab(第四章 函数和方程)

4.1 预备知识:零点
非线性方程(组)f (x) = 0, x=(x1, x2, …, xn), f=(f1, f2, …, fm) • 数值方法主要是综合运用线性方程组和非线性方程求 解方法,常用的方法是Newton法、拟Newton法、最 小二乘法等。
4.1 预备知识:极值
设x为标量或向量,y=f(x)是xD上的标量值函数。
如果对于包含x=a的某个邻域 ,有 f(a)f(x) (f(a)f(x))对任意x成立, 则称a为f(x)的一个局 部极小(大)值点。 如果对任意xD,有f(a)f(x)(f(a)f(x))成立, 则称a为f(x)在区域D上的一个全局极小(大)值点。
4.1 预备知识:极值
4.1 预备知识:最次代数方程 (n次多项式方程) 1. 代数学基本定理可知,n次方程在复数 域上有n个根; 2. n<=4,有求根公式; n>=5无求根公式,只能借助数值解法;
代数方程的解法
• 远在公元前1700年的古巴比伦人就已有关于一、 二次方程的解法。《九章算术》(公元前50~100年) 其中“方程术”有联立一次方程组的一般解法。 • 1535年意大利数学家坦特格里亚(TorTaglia)发现 了三次方程的解法,卡当(H· Cardano)从他那里改 进了这种解法,于1545年在其名著《大术》中公 布了三次方程的公式解,称为卡当算法。
4.2 多项式MATLAB指令
• 多项式
y=polyval(p,x) 求得多项式p在x处的值y,x可以是一个 或多个点 p3=conv(p1,p2) 返回多项式p1和p2的乘积 [p3,r]=deconv(p1,p2) p3返回多项式p1除以p2的商,r返 回余项 x=roots(p) 求得多项式p的所有复根. p=polyfit(x,y,k)用k次多项式拟合向量数据(x, y),返回多 项式的降幂系数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本原多项式
4.2.1 函数介绍
decode 功能:差错控制译码。 语法: msg = decode(code,n,k,'hamming/fmt',prim_poly) msg = decode(code,n,k,'linear/fmt',genmat,trt) msg = decode(code,n,k,'cyclic/fmt',genpoly,trt) msg = decode(code,n,k) [msg,err] = decode(...) syndtable [msg,err,ccode] = decode(...)
4.4.1 线性分组码原理
反映线性分组码纠错能力的重要参数是最小(汉明) 码距,即任何两个不同码字间的最小汉明距离。在 线性码中,最小距离等于该码的最小码重。
4.3.1 线性分组码解码原理

从长为N的码字中恢复出长为K的信元需要经过一 个矩阵运算--伴随式计算。 假定接收到的信号是码字v和信道中产生的错误序 列e的叠加,即r=v+e,则译码过程包括下面四个 步骤:
h= 1 0 0
0 1 0
0 0 1
1 1 0
0 1 1
1 1 1
1 0 1
Hamming码





[h,g,n,k] = hammgen(3) h=1001011 0101110 0010111 g=1101000 0110100 1110010 1010001 n=7 k=4
,校正子与真值表的关系
校正子S s2 s1 s0
错误码位
真值表E e6 e5 e2 e3 e2 e1 e0
0 1 2 3 4 5 6 7
无 b4 b5 b2 b6 b0 b3 b1
0000000 0010000 0100000 0000100 1000000 0000001 0001000 0000010

1 1]]
4.3.3 线性分组码的MATLAB仿真作业
1 0 G 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

作业:假设生成矩阵为
(7 , 4) 线 性 分 组 码 。 用 MATLAB 函 数 encode 和 decode实现编/译码过程,要求:信息码用随机数;
加入一定的噪声后进行解码 ;并且计算错误比特 数
4.3.3 线性分组码的仿真模块
线性分组码编码参数
线性分组码解码参数
序号
错误码位
真值表E e6 e5 e2 e3 e2 e1 e0
校正子S s2 s1 s0
0 1 2 3 4 5 6 7
无 b4 b5 b2 b6 b0 b3 b1
0000000 0010000 0100000 0000100 1000000 0000001 0001000 0000010
rem与mod函数比较

rem(3,-2)
ans =1
rem(-3,2)

ans =-1
ans =-1 ans =1
与X符号同

mod(3,-2) mod(-3,2)

与Y符号同
4.2.2 通信工具箱差错控制函数举例
对二进制信息流进行hamming编码,信元长度 为4,码字长度为7: N=7; K=4; row_num=100; msg=randint(K*row_num,1,2); code=encode(msg,N,K,’hamming'); nois=randerr(row_num,N,1); code=rem(code(:)+nois(:),2); rcv=decode(code,N,K,' hamming'); err=biterr(rcv,msg);
4.1.1 差错控制编码过程

通信系统接收端
1.从信道接受信号并进行解调,恢复序列 2.按某种方式计算信息序列有无差错 3.检错/纠错
4.1.2 差错控制编码分类
分组码 线性编码 卷积码 非线性编码
汉明码 循环码
各码元仅与本组的信息元有关
各码元不仅与本组的信息元有关,还 与前面的若干组信息元有关
4.3.2 线性分组码的MATLAB仿真举例

例1 (7,4)线性分组码生成矩阵如下(通信原理 书中):
G=[1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0 0 0 1 0 1 1];
求线性分组码编码后的码组
4.3.2线性分组码的MATLAB仿真举例
程序: g=[1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0 0 0 1 0 1 1]; r=[0 0 1 0]'; code=encode(r,7,4,'linear',g) code = 0 0 1 0 g=[eye(4),[1 1 1;1 1 0;1 0 1;0 1 0 1

举例

r=[1 1 1 0 ]'; code=encode(r,7,4,'hamming') code1=decode(code,7,4)
0 1 0 1 1 1 0
4.2.2 通信工具箱差错控制函数举例
对二进制信息流进行 hamming编码,信元长度为 4,码 字长度为7: N=7; K=4; row_num=100; msg=randint(K*row_num,1,2); code=encode(msg,N,K,’hamming'); nois=randerr(row_num,N,1); code=rem(code(:)+nois(:),2); rcv=decode(code,N,K,' hamming'); err=biterr(rcv,msg);

4.3 线性分组码

4.4.1 线性分组码原理
线性分组编/译码是一种常用的编/译码方法。其它一些编/ 译码方法,例如汉明码或 BCH 码,都是线性分组码的特 例。在线性分组码中,码字矢量是消息矢量的映射。 码字v和信元u有如下关系: v=uG G是生成矩阵(K行N列)

4.3 线性分组码

000 001 010 011 100 101 110 111
4.3.1 线性分组码解码原理

通信工具箱为对称线性分组码提供了一个函数gen2par, 该函数可以由生成矩阵G计算出校验矩阵H的值。利用 伴随式的值,通过一个逻辑电路真值表就可以确定错误 的位置。
在通信工具箱中,单独的错误可以通过指令htruthtb的 运算发现(相当于求出校正子与真直表的对应关系)。 一旦求出e,v就可以通过有限域GF(2)上的简单加法运 算得到。

4.3.1 线性分组码解码原理
gen2par 功能:生成矩阵和校验阵的转换函数。 语法:h=gen2par(g); g=gen2par(h); 说明:h=gen2par(g)可以由一个生成矩阵 g得到 校验阵h,反之亦可。



g=[1 1 0 1 0 0 0;0 1 1 0 1 0 0;1 1 1 0 0 1 0;1 0 1 0 0 0 1]; h=gen2par(g)

out = randerr(8,7,[0 2]) out = 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0

out2 = randerr(8,7,[0 2; .25 .75]) out2 = 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0
计算r的伴随式的值;s=rHT
利用伴随式的值确定错误的位置; 将接收到的矢量还原为码字矢量
v=r-e; 从处理过的码字中恢复出原始的信息码元 。
4.4.2 线性分组码解码原理

当生成矩阵
序号
G
1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1
第四章 差错控制编/译码
4.1 差错控制编码概述

在通信系统中,发送端发出的信号受到噪声的影响,
信号的传输波形若受到破坏,则会使得接收端可能 发生错误判决。

信道编码是现代通信系统广泛采用的一种差错控制 措施。
4.1.1 差错控制编码过程

通信系统发送端
1.按某种方式对信息计算,得到检错/纠错 码 2.把此检错/纠错编码附加到信息序列中 3.把上一步得到的信息序列经过载波调制之 后发送到信道中
rem函数

求余函数

rem(x,y) has the same sign as x while mod(x,y) has the same sign as y.

rem(x,y) and mod(x,y) are equal if x and y have the same sign, but differ by y if x and y have different signs.
线性分组码

结构为(N,K)

其中K为信息位的长度 N-K为监督位的长度 信息位和监督位有一些线性方程联系着,并且各个 码之间是相互独立的
4.2 差错控制编/译码函数

encode 功能:差错控制编码
语法:
相关文档
最新文档