MATLAB实验4

合集下载

实验4 MATLAB绘图

实验4 MATLAB绘图
3
实验四 MATLAB 绘图
4)在第一小题的基础上加入网格和标注。 3 绘制单位圆。 提示:使用 axis( ‘ square’ )命令保证图形的纵横坐标刻度比例相同。 4 设 R 分别为 1, 5, 10 和 20,绘制伏安特性曲线, U=RI。 5
⎧ x = t ⎪ 绘制方程 ⎨ y = sin(t ) 在 t=[0 ⎪ z = cos(t ) ⎩
三 实验内容
1 已知向量 [1, 2, 4, 0, 5, 10, 11, 21, 3, 1],请绘图表示。 2 绘制一条正弦曲线和一条余弦曲线,分别满足以下条件: 1)在同一窗口,正弦曲线用红色的点线表示,余弦曲线用蓝色的星型线表示; 2)在同一个窗口中,要求分割为一行两列的子图,子图 1 为正弦曲线,子图 2 为余弦曲线 ;(线形与上题一致 ); 3)在两个不同的窗口中绘制这两条曲线;
1
实验四 MATLAB 绘图
1) . 单 窗 口 单 曲 线 绘 图 x=[0, 0.48,0.84,1,0.91,0.6,0.14] plot (x) 2) . 单 窗 口 多 曲 线 绘 图 例: t=0:pi/100:2*pi; y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5); plot(t,y,t,y1,t,y2) 3) . 单 窗 口 多 曲 线 分 图 绘 图 subplot —— 子图分割命令 调用格式: subplot(m,n,p) —— 按从左至右,从上至下排列 4) . 多 窗 口 绘 图 figure(n) —— 创建窗口函数, n 为窗口顺序号。 例 t=0:pi/100:2*pi; y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5); plot(t,y) —— 自动出现第一个窗口 figure(2) plot(t,y1) —— 在第二窗口绘图 figure(3) plot(t,y2) ——在第三窗口绘图 5) .可 任 意 设 置 颜 色 与 线 型 plot(t,y,'r-',t,y1,'g:',t,y2,'b*') 6) .图 形 加 注 功 能 将标题、坐标轴标记、网格线及文字注释加注到图形上,这些函数为: title —— 给图形加标题 xlable —— 给 x 轴加标注 ylable —— 给 y 轴加标注 text —— 在图形指定位置加标注 gtext —— 将标注加到图形任意位置 grid on(off) —— 打开、关闭坐标网格线 legend —— 添加图例 axis —— 控制坐标轴的刻度 例: t=0:0.1:10 y1=sin(t);y2=cos(t);plot(t,y1,'r',t,y2,'b--'); x=[1.7*pi;1.6*pi]; y=[-0.3;0.8]; s=['sin(t)';'cos(t)']; text(x,y,s); title('正弦和余弦曲线 '); legend('正弦 ','余弦 ') xlabel('时间 t'),ylabel('正弦、余弦 ') grid

实验4 matlab gui设计

实验4 matlab gui设计

实验四 MATLAB GUI设计一.预备知识点1. 图形用户界面(GUI)是用户与计算机程序之间的交互方式,是用户与计算机进行信息交流的方式。

计算机在屏幕显示图形和文本,若有扬声器还可产生声音。

用户通过输入设备,如:键盘、鼠标、跟踪球、绘制板或麦克风,与计算机通讯。

用户界面设定了如何观看和如何感知计算机、操作系统或应用程序。

通常,多是根据悦目的结构和用户界面功能的有效性来选择计算机或程序。

图形用户界面或GUI是包含图形对象,如:窗口、图标、菜单和文本的用户界面。

以某种方式选择或激活这些对象,通常引起动作或发生变化。

最常见的激活方法是用鼠标或其它点击设备去控制屏幕上的鼠标指针的运动。

按下鼠标按钮,标志着对象的选择或其它动作。

2.对“句柄图形”的理解是设计和实现GUI的先决条件。

由图形命令生成的每一事物是一个图形对象。

图形对象不仅包括uimenu和uicontrol对象,而且还包括图形、坐标轴和他们的子对象。

让我们从另一个角度来看这一层次结构。

计算机的屏幕本身是根结点,图形是根对象的子对象,坐标轴,uimenu ,uicontrol是图形的子对象。

根可以包括多个图形,每个图形含有一组或多组坐标轴以及其子对象,每个图形也可以有一个或多个与坐标轴无关的uimenu和uicontrol。

虽然uicontrol对象无子对象结点,但他们确实具有多种类型。

uimenu对象常将其它的uimenu对象作为其子对象。

3. MATLAB的图形用户界面设计实际上是一种面向对象的设计方法。

假设想建立一个图形界面来显示和处理二维图形的颜色、线型及数据点的图标。

要求其基本功能是:(1)建立一个主坐标系,用来显示要绘制的二维图形;(2)建立一个列表框,允许用户选择不同的着色方法;(3)建立一组按扭,用于处理二维图形线型和数据点的图标;(4)为图形界面加入菜单项,用于决定坐标轴是否显示及坐标轴上是否需要网格;(A)最初图形界面的设想如下图所示:(B)根据上面的设想,下面我们就来制作它的图形用户界面:首先,我们先来看其图形窗口的设置。

实验四MATLAB数值计算与符号计算

实验四MATLAB数值计算与符号计算

实验四 MATLAB数值计算与符号计算一、实验目的1.掌握数据插值和曲线拟合的方法2.掌握求数值导数和数值积分的方法3.掌握代数方程数值求解的方法4.掌握常微分方程数值求解的方法5.掌握求解优化问题的方法6.掌握求符号极限、导数和积分的方法7.掌握代数方程符号求解的方法8.掌握常微分方程符号求解的方法二、实验原理1.数据插值a) 一维数据插值 Y1=interp1(X,Y,X1,’method’)b) 二维数据插值 Z1=interp2(X,Y,Z,X1,Y1,’method’)2.曲线拟合[P,S]=polyfit(X,Y,m)3.符号对象的建立(1)符号量名=sym(符号字符串):建立单个的符号变量或常量;(2)syms arg1 arg2,…,argn:建立n个符号变量或常量。

4.基本符号运算(1)基本四则运算:+,-,*,\,^(2)分子与分母的提取:[n,d]=numden(s)(3)因式分解与展开:factor(s),expand(s)(4)化简:simplify, simple(s)5.符号函数及其应用(1)求极限:limit(f,x,a)(2)求导数:diff(f,x,a);(3)求积分:int(f,v)三、实验内容1.按下表用3次样条方法插值计算0~900范围内整数点的正弦值和0~750范围内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。

x2=0:75;y1=sin(pi.*x1./180);y2=tan(pi.*x2./180);;a=interp1(x1,y1,45,'cublic')b=interp1(x1,y1,45,'cublic')p1=polyfit(x1,y1,5)p2=polyfit(x2,y2,5)c1=polyval(p1,x1);c2=polyval(p2,x2);subplot(2,1,1);plot(x1,c1,':o',x1,y1,'r');subplot(2,1,2);plot(x2,c2,':o',x2,y2,'r');10203040506070802.(1)求函数33()sin cos f x x x =+在点,,,6432x ππππ=的数值导数。

MATLAB实验四_求微分方程的解

MATLAB实验四_求微分方程的解

参数说明
[T,Y] = solver(odefun,tspan,y0)
odefun 为显式常微分方程,可以用命令 inline 定义,或 在函数文件中定义,然后通过函数句柄调用。
dy 2 2 y 2 x 2x 求初值问题 的数值解,求解范 例: dx 围为 [0,0.5] y( 0 ) 1
dsolve的输出个数只能为一个 或 与方程个数相等。
只有很少一部分微分方程(组)能求出解析解。 大部分微分方程(组)只能利用数值方法求数值解。
Matlab函数数值求解
[T,Y] = solver(odefun,tspan,y0)
其中 y0 为初值条件,tspan为求解区间;Matlab在数值求解 时自动对求解区间进行分割,T (列向量) 中返回的是分割点 的值(自变量),Y (数组) 中返回的是这些分割点上的近似解, 其列数等于因变量的个数。
数学实验
实验四
求微分方程的解
问题背景和实验目的
自牛顿发明微积分以来,微分方程在描述事物运 动规律上已发挥了重要的作用。实际应用问题通过 数学建模所得到的方程,绝大多数是微分方程。 由于实际应用的需要,人们必须求解微分方程。 然而能够求得解析解的微分方程十分有限,绝大多 数微分方程需要利用数值方法来近似求解。 本实验主要研究如何用 Matlab 来计算微分方程 (组)的数值解,并重点介绍一个求解微分方程的 基本数值解法--Euler折线法。
Runge-Kutta 方法
Euler 法与 R-K法误差比较
Matlab 解初值问题
用 Maltab自带函数 解初值问题 求解析解:dsolve 求数值解:
ode45、ode23、 ode113、ode23t、ode15s、 ode23s、ode23tb

实验4、matlab的计算可视化和GUI设计

实验4、matlab的计算可视化和GUI设计

p345subplot(2,2,1)t1=0:0.1:2;y1=sin(2*pi*t1);plot(t1,y1);title('y=sin(2\pit)')练习:subplot(2,2,2)t2=0:0.1:2;y2=[exp(-t2);exp(-2*t2);exp(-3*t2)]; plot(t2,y2)axis([0 2 -0.2 1.2]);title('y=e-t,y=e-2t,y=e-3t')练习:subplot(2,2,3);t3=[0 1 1 2 2 3 4]; y3=[0 0 2 2 0 0 0]; plot(t3,y3);axis([0 4 -0.5 3]); title('脉冲信号')练习:subplot(2,2,4);t4=0:0.1:2*pi;plot(sin(t4),cos(t4));axis([-1.2 1.2 -1.2 1.2]);axis equal;title('圆')练习:P346x=0:0.1:20;zeta=0y1=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt( 1-zeta^2)*x+acos(zeta));plot(x,y1)zeta=0.3;y2=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt( 1-zeta^2)*x+acos(zeta));hold onplot(x,y2,'r:')zeta=0.5;y3=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt( 1-zeta^2)*x+acos(zeta));plot(x,y3,'g*')zeta=0.707;y4=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt( 1-zeta^2)*x+acos(zeta));plot(x,y4,'m-')title('二阶系统曲线')legend('\zeta=0','\zeta=0.3','\zeta=0.5','\zeta=0. 707')grid ongtext('\zeta=0')gtext('\zeta=0.3')gtext('\zeta=0.5')gtext('\zeta=0.707')ginput(3)zeta =ans =2.6037 0.903513.1106 2.00294.2166 1.0380P347h_fig=gcfh_axis=gcah_line1=gcoh_title=get(gca,'title')h_text2=findobj(h_fig,'string','\zeta=0.3') h_fig =1h_axis =151.0018h_line1 =1h_title =152.0018h_text2 =Empty matrix: 0-by-1set(h_line1,'linewidth',5)set(h_axis,'xgrid','off')set(gca,'ytick',[0 0.25 0.5 1.0 1.25 1.5 1.75 2.0])set(h_title,'color','red','fontsize',13)set(h_text2,'color','red')??? Undefined function or variable 'h_axis'.P349x=0:0.1:20;y1=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt( 1-zeta^2)*x+acos(zeta));y2=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt( 1-zeta^2)*x+acos(zeta));y3=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt( 1-zeta^2)*x+acos(zeta));y4=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt( 1-zeta^2)*x+acos(zeta));y=[y1;y2;y3;y4];z=[ones(size(x))*0;ones(size(x))*0.3;ones(siz e(x))*0.5;ones(size(x))*0.707];plot(x,x,x,x)surf(x,x,x,x)??? Input argument "n" is undefined.Error in ==> zeta at 12Z = double(zeta(sym(n),sym(X)));P350x=0:0.3:2*pi;y=sin(x);subplot(2,2,1)bar(x,y,0.5)axis([0,2*pi,-1.2,1.2])subplot(2,2,2)fill(x,y,'r')subplot(2,2,3)stairs(x,y)subplot(2,2,4)stem(x,y)P350guide。

实验四 MATLAB的绘图

实验四  MATLAB的绘图

西安邮电大学《Matlab程序设计基础》课内实验报告题目:实验四MATLAB的绘图院系名称:计算机学院专业名称:计算机科学与技术班级:计科1502班内序号:05141107(29)学生姓名:赵阳指导教师:张老师实验四MATLAB的绘图一、实验目的:掌握基本的绘图函数plot。

二、实验内容:1、在同一坐标系下绘制下面三个函数在[0,4pi]的图象。

代码如下:t=0:pi/100:4*pi;y1=t;y2=sqrt(t);y3=4*pi*exp(-0.1*t).*sin(t);plot(t,y1,t,y2,t,y3)2、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。

代码如下:x=linspace(-6,6,100);y=[];for x0=xif x0<=0y=[y,sin(x0)];elseif x0<=3y=[y,x0];elsey=[y,-x0+6];endendplot(x,y)3、用compass函数画下面相量图ua=1;ub=cos(-2*pi/3)+sin(-2*pi/3)*i;uc=cos(2*pi/3)+sin(2*pi/3)*i;compass([ua,ub,uc,ua-ub,ub-uc,uc-ua])代码如下:ua=1;ub=cos(-2*pi/3)+sin(-2*pi/3)*i;uc=cos(2*pi/3)+sin(2*pi/3)*i;compass([ua,ub,uc,ua-ub,ub-uc,uc-ua])4、三维空间曲线绘制z=0:0.1:4*pi;x=cos(z);y=sin(z);plot3(x,y,z)代码如下:z=0:0.1:4*pi;x=cos(z);y=sin(z);plot3(x,y,z)5、用mesh或surf函数,绘制下面方程所表示的三维空间曲面,x和y的取值范围设为[-3,3]。

代码如下:[x,y]=meshgrid(-3:0.5:3);z=-x^2/10+y^2/10;mesh(x,y,z)三、思考题在同一坐标系下,用不同颜色和线型绘制以下两个函数在tÎ[-2p,2p]范围内的图象。

matlab实验4_循环结构程序设计_参考解答

matlab实验4_循环结构程序设计_参考解答

高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
实验四:循环结构程序设计
clear all; close all; clc; y=0; n=1; while y<3
y=y+1/(2*n-1); n=n+1; end n=n-1; y=y-1/(2*n-1) n=n-1
运行结果:
y= 2.9944
x1=a/(b+x0); y=abs(x1-x0); x0=x1;
MATLAB 语言
3
WangChengyou © 山东大学威海分校
高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
实验四:循环结构程序设计
n=n+1; end x1 r1=(-b+sqrt(b^2+4*a))/2 r2=(-b-sqrt(b^2+4*a))/2
clear all; close all; clc; prime=[]; for n=2:49
x=n*(n+1)-1; signx=0; for k=2:sqrt(x)
MATLAB 语言
5
WangChengyou © 山东大学威海分校
高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
根据
π2 6
=1 12
+
1 22
+1 32
+"+
1 n2
,求 π 的近似值。当
n
分别取
100、1000、10000
时,
结果是多少?
要求:分别用循环结构和向量运算(使用 sum 函数)来实现。 答:程序设计:
(1) 循环结构

matlab实验四 数据可视化方法

matlab实验四 数据可视化方法

实验四数据可视化方法[实验目的]1.掌握曲线绘制的基本技法和指令,会使用线形、色彩、数据点标记表现不同数据的特征,掌握生成和运用标识注释图形。

2.进一步掌握函数编写及数据可视化方法。

[实验原理]MATLAB 提供了相当强大的可视化指令,通过这些指令,我们可以非常简单地实现数据的可视化。

首先我们来看离散数据和离散函数的可视化方法。

对于离散实函数y n=f(x n),当x n以递增(或递减)次序取值时,根据函数关系可以求得同样数目的y n,当把这两组向量用直角坐标中的点次序图示时,就实现了离散函数的可视化。

当然这种图形上的离散序列所反映的只是某确定的有限区间内的函数关系,不能表现无限区间上的函数关系。

通常我们可以采用plot 或者stem 来实现。

只是需要注意的是使用plot 时,需要使用星号或者点等标识来表示数据点,比如plot(x n,y n,’r*’,’MarkerSize’,20),就表示用字号20的红色星点来标识数据点,此时为了便于观察,通常随后加上一条语句“grid on”,即给图形加上坐标方格。

而采用stem 标识数据点的格式是stem(x n,y n)。

连续函数的可视化与离散函数可视化类似,也必须先在一组离散自变量上计算相应的函数值,并把这一组“数据点”用点图示。

但这些离散的点不能表现函数的连续性。

为了进一步表示离散点之间的函数函数情况,MATLAB 有两种常用处理方法:一是对区间进行更细的分割,计算更多的点,去近似表现函数的连续变化;或者把两点用直线连接,近似表现两点间的(一般为非线性的)函数形状。

但要注意,倘若自变量的采样点不足够多,则无论哪种方法都不能真实地反映原函数。

对于二维数据,常用指令仍旧是plot。

对于离散数据,plot指令默认处理方法是:自动地把这些离散数据用直线(即采用线性插值)连接,使之成为连续曲线。

对于三维图形的表示,通常有plot3 等指令。

通常,绘制二维或三维图形的一般步骤如下表所示:说明:●步骤1、3 是最基本的绘图步骤,一般来说,由这两步所画出的图形已经具备足够的表现力。

实验四 用MATLAB求解状态空间模型

实验四 用MATLAB求解状态空间模型

实验四 用MATLAB 求解状态空间模型1、实验设备MATLAB 软件2、实验目的① 学习线性定常连续系统的状态空间模型求解、掌握MATLAB 中关于求解该模型的主要函数;② 通过编程、上机调试,进行求解。

3、实验原理说明Matlab 提供了非常丰富的线性定常连续系统的状态空间模型求解(即系统运动轨迹的计算)的功能,主要的函数有:初始状态响应函数initial()、阶跃响应函数step()以及可计算任意输入的系统响应数值计算函数lsim()和符号计算函数sym_lsim()。

数值计算问题可由基本的Matlab 函数完成,符号计算问题则需要用到Matlab 的符号工具箱。

4、实验步骤① 根据所给状态空间模型,依据线性定常连续系统状态方程的解理论,采用MATLAB 编程。

② 在MATLAB 界面下调试程序,并检查是否运行正确。

习题1:试在Matlab 中计算如下系统在[0,5s]的初始状态响应,并求解初始状态响应表达式。

Matlab 程序如下:A=[0 1; -2 -3];B=[]; C=[]; D=[];x0=[1; 2];sys=ss(A,B,C,D);[y,t,x]=initial(sys,x0,0:5);plot(t,x)0011232⎡⎤⎡⎤==⎢⎥⎢⎥--⎣⎦⎣⎦x x x习题2:试在Matlab 中计算如下系统在[0,10s]内周期为3s 的单位方波输入下的状态响应。

并计算该系统的单位阶跃状态响应表达式。

Matlab 程序如下:A=[0 1; -2 -3];B=[0; 1]; C=[]; D=[];x0=[1; 2];sys=ss(A,B,C,D);[u t]=gensig('square',3,10,0.1)0011232⎡⎤⎡⎤==⎢⎥⎢⎥--⎣⎦⎣⎦x x x[y,t,x] = lsim(sys,u,t,x0)plot(t,u,t,x);(注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。

MATLAB数学实验 第四章 函数和方程

MATLAB数学实验 第四章 函数和方程
• 假设已知经验公式y=f(c,x)(c为参数, x为自变量), 要求根据 一批有误差的数据(xi,yi), i=0,1,…,n, 确定参数c.这样的问 题称为数据拟合。 • 最小二乘法就是求c使得均方误差最小化 Q(c)=
2 ( y f ( c , x )) i i i 0 n
• 当f关于c是线性函数,问题转化为一个线性方程组求解。 • 如果f关于c是非线性函数,问题转化为函数极值问题
3387/1943*x^2-7637646031980105/4503599627370496*x+4886217849135065/4503599627370496
• >> vpa(fun,5) ans = 1.7432*x^2-1.6959*x+1.0850
• >> xi=-0.2:0.01:0.3; • >> yi=polyval(p,xi); • >> plot(x,y,‘ro’,xi,yi)%拟合效果作图
c= lsqnonlin (Fun,c0) non-linear least squares problems.
使用迭代法搜索最优参数c. 其中Fun是以参数c(可 以是向量)为自变量的函数,表示误差向量yf(c,x)(x, y为数据),c0为参数c的近似初值(与c同 维向量),具体使请看帮助文件。
c=lsqcurvefit(Fun2,c0, x, y) 从外部输入数据, 这里Fun2为两变量c和x的函数 f(c, x)

的调用格式
x= -3 y= -2.7183
• (3) • >> fun3=inline('100*(v(2)-v(1)^2)^2+(1-v(1))^2','v') fun3 = Inline function: fun3(v) = 100*(v(2)-v(1)^2)^2+(1-v(1))^2 • >> [v,fv]=fminsearch(fun3,[1 1]) v= 1 1 fv = 0

实验4 MATLAB中的各种积分运算

实验4 MATLAB中的各种积分运算
2

解:区域D可用不等式表示为: x2 y x , 0 x 1 syms x


y=(x*exp(x))/(1+x)^2; int(y,0,1)

例3:计算二重积分
2
( x 2 y)dxdy ,其中D为曲线
D
y x 和 x y 所围成的区域。
2

解:区域D可用不等式表示为: x2 y x , 0 x 1 所以,计算该积分的MATLAB程序为:
实Hale Waihona Puke 四MATLAB中的各种积分运算
一、实验目的

熟悉MATLAB软件中关于积分运算的基本命令,掌 握利用MATLAB软件进行求不定积分、定积分等积 分运算的方法。
二、相关知识
在微积分中,我们曾经学习了求函数不定积分和定 积分的运算,那时我们根据微积分的原理,学习了 一整套各种各样的方法,其中包括了许多技巧,现 在我们尝试用软件来解决这样的问题。 MATLAB提供的命令函数int()可以完成积分运算, 其调用格式有如下几种: int(fun) 计算函数fun关于默认变量的不定积分 int(fun,x) 计算函数fun关于变量x的不定积分 int(fun,x, a, b) 计算函数fun关于变量x从a到b的 定积分 我们通过例子来学习具体的用法:

xe dx。 例2:计算定积分 2 0 (1 x )
1
x
解:可以用下面的程序实现计算: clear syms x y=(x*exp(x))/(1+x)^2; int(y,0,1)


例3:计算二重积分
2
( x2 y)dxdy ,其中D为曲线

数字图像处理及MATLAB实现实验四——图像变换

数字图像处理及MATLAB实现实验四——图像变换

数字图像处理及MATLAB实现实验四——图像变换1.图像的傅⾥叶变换⼀(平移性质)傅⾥叶变换的平移性质表明了函数与⼀个指数项相乘等于将变换后的空域中⼼移到新的位置,并且平移不改变频谱的幅值。

I=imread('1.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));I=imread('2.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));I=imread('3.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI); %求离散傅⾥叶频谱%对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;figure(2)imshow(real(a));实验结果符合傅⾥叶变换平移性质2.图像的傅⾥叶变换⼆(旋转性质)%构造原始图像I=zeros(256,256);I(88:168,124:132)=1; %图像范围是256*256,前⼀值是纵向⽐,后⼀值是横向⽐imshow(I)%求原始图像的傅⾥叶频谱J=fft2(I);F=abs(J);J1=fftshift(F);figureimshow(J1,[550])%对原始图像进⾏旋转J=imrotate(I,90,'bilinear','crop');figureimshow(J)%求旋转后图像的傅⾥叶频谱J=fft2(I);F=abs(J);J2=fftshift(F);figureimshow(J2,[550])3.图像的离散余弦变换⼀%对cameraman.tif⽂件计算⼆维DCT变换RGB=imread('cameraman.tif');figure(1)imshow(RGB)I=rgb2gray(RGB);%真彩⾊图像转换成灰度图像J=dct2(I);%计算⼆维DCT变换figure(2)imshow(log(abs(J)),[])%图像⼤部分能量集中在左上⾓处figure(3);J(abs(J)<10)=0;%把变换矩阵中⼩于10的值置换为0,然后⽤idct2重构图像K=idct2(J)/255;imshow(K)4.图像的离散余弦变换⼆% I=imread('1.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% I=imread('2.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% I=imread('3.bmp');% figure(1)% imshow(real(I));% I=I(:,:,3);% fftI=fft2(I);% sfftI=fftshift(fftI); %求离散傅⾥叶频谱% %对原始图像进⾏⼆维离散傅⾥叶变换,并将其坐标原点移到频谱图中央位置% RRfdp1=real(sfftI);% IIfdp1=imag(sfftI);% a=sqrt(RRfdp1.^2+IIfdp1.^2);% a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;% figure(2)% imshow(real(a));% %构造原始图像% I=zeros(256,256);% I(88:168,124:132)=1; %图像范围是256*256,前⼀值是纵向⽐,后⼀值是横向⽐% imshow(I)% %求原始图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J1=fftshift(F);figure% imshow(J1,[550])% %对原始图像进⾏旋转% J=imrotate(I,90,'bilinear','crop');% figure% imshow(J)% %求旋转后图像的傅⾥叶频谱% J=fft2(I);% F=abs(J);% J2=fftshift(F);figure% imshow(J2,[550])% %对cameraman.tif⽂件计算⼆维DCT变换% RGB=imread('cameraman.tif');% figure(1)% imshow(RGB)% I=rgb2gray(RGB);% %真彩⾊图像转换成灰度图像% J=dct2(I);% %计算⼆维DCT变换% figure(2)% imshow(log(abs(J)),[])% %图像⼤部分能量集中在左上⾓处% figure(3);% J(abs(J)<10)=0;% %把变换矩阵中⼩于10的值置换为0,然后⽤idct2重构图像% K=idct2(J)/255;% imshow(K)RGB=imread('cameraman.tif');I=rgb2gray(RGB);I=im2double(I); %转换图像矩阵为双精度型T=dctmtx(8); %产⽣⼆维DCT变换矩阵%矩阵T及其转置T'是DCT函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000110000001000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*P2',T',T); %重构图像figure,imshow(T);figure,imshow(B2);figure,imshow(I2);RGB=imread('cameraman.tif');I=rgb2gray(RGB);I=im2double(I); %转换图像矩阵为双精度型T=dctmtx(8); %产⽣⼆维DCT变换矩阵%矩阵T及其转置T'是DCT函数P1*X*P2的参数B=blkproc(I,[88],'P1*x*P2',T,T');maxk1=[ 1111000011100000100000000000000000000000000000000000000000000000 ]; %⼆值掩模,⽤来压缩DCT系数B2=blkproc(B,[88],'P1.*x',mask1); %只保留DCT变换的10个系数I2=blkproc(B2,[88],'P1*x*P2',T',T); %重构图像figure,imshow(T);figure,imshow(B2);figure,imshow(I2);5.图像的哈达玛变换cr=0.5;I=imread('cameraman.tif');I=im2double(I)/255; %将读⼊的unit8类型的RGB图像I转换为double类型的数据figure(1),imshow(I);%显⽰%求图像⼤⼩[m_I,n_I]=size(I); %提取矩阵I的⾏列数,m_I为I的⾏数,n_I为I的列数sizi=8;snum=64;%分块处理t=hadamard(sizi) %⽣成8*8的哈达码矩阵hdcoe=blkproc(I,[sizi sizi],'P1*x*P2',t,t');%将图⽚分成8*8像素块进⾏哈达码变换%重新排列系数CE=im2col(hdcoe,[sizi,sizi],'distinct');%将矩阵hdcode分为8*8互不重叠的⼦矩阵,再将每个⼦矩阵作为CE的⼀列[Y Ind]=sort(CE); %对CE进⾏升序排序%舍去⽅差较⼩的系数,保留原系数的⼆分之⼀,即32个系数[m,n]=size(CE);%提取矩阵CE的⾏列数,m为CE的⾏数,n为CE的列数snum=snum-snum*cr;for i=1:nCE(Ind(1:snum),i)=0;end%重建图像re_hdcoe=col2im(CE,[sizi,sizi],[m_I,n_I],'distinct');%将矩阵的列重新组织到块中re_I=blkproc(re_hdcoe,[sizi sizi],'P1*x*P2',t',t);%进⾏反哈达码变换,得到压缩后的图像re_I=double(re_I)/64; %转换为double类型的数据figure(2);imshow(re_I);%计算原始图像和压缩后图像的误差error=I.^2-re_I.^2;MSE=sum(error(:))/prod(size(re_I));。

实验4答案 Matlab程序设计1

实验4答案 Matlab程序设计1

实验4 Matlab 程序设计1实验目的:1、 掌握建立和执行M 文件的方法;2、 掌握实现选择结构的方法;3、 掌握实现循环结构的方法。

实验内容:1. 从键盘输入一个4位整数,按如下规则加密后输出。

加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。

a = input('请输入一个四位整数:');a1 = fix(a/1000);a2 = rem(fix(a/100),10);a3 = rem(rem(fix(a/10),100),10);a4 = rem(a,10);a1 = rem(a1+7,10)a2 = rem(a2+7,10)a3 = rem(a3+7,10)a4 = rem(a4+7,10)b1 = a1;a1 = a3;a3 = b1;b2 = a2;a2 = a4;a4 = b2;b = a1*1000+a2*100+a3*10+a42. 求分段函数的值。

,x x x x y x x x x x x x ⎧+- <≠-⎪=-+ ≤<≠≠⎨⎪-- ⎩2226035605231且且及其他用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。

x = input(请输入X 的值:');if x <0 & x~=-3y = x.*x +x-6;elseif x>=0 & x<5 & x~=2 & x~=3y = x.*x-5*x+6;elsey = x.*x-x-1;endy3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

要求:(1)分别用if语句和swich语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

实验四-使用matlab实现卷积的运算

实验四-使用matlab实现卷积的运算

实验四-使用m a t l a b实现卷积的运算(总5页)-本页仅作为预览文档封面,使用时请删除本页-实验四 使用matlab 实现卷积的运算一 实验目的1、学习MATLAB 语言的编程方法及熟悉MATLAB 指令; 2、深刻理解卷积运算,利用离散卷积实现连续卷积运算; 二 实验内容1、 完成)(1t f 与)(2t f 两函数的卷积运算其中:)4()()(),()(221--==-t u t u t f t u e t f t 在一个图形窗口中,画出)(1t f 、)(2t f 以及卷积结果。

要求每个坐标系有标题、坐标轴名称。

p = ; %定义时间间隔t= 0:p:10;%定义时间向量f1=exp(-2*t).*u(t); %将f (t )表示出来f2=u(t)-u(t-4);f=conv(f1,f2);subplot(1,2,1);plot(t,f1,t,f2); title('f1=e^-2t*u(t)'' / ''f2=u(t)-u(t-4)');xlabel('t(sec)'); % 这行代码是给出x 坐标的标签ylabel('f(t)');grid on ;subplot(1,2,2);plot(f); title('f=f1*f2');xlabel('t(sec)'); % 这行代码是给出x 坐标的标签ylabel('f')grid on2、 若系统模型为:)(3)()(4)(4)(''''t f t f t y t y t y +=++ 其中 )()(t u e t f t -=求零状态响应,画出波形(函数本身画出一幅图,自己再画出一幅输入波形图)。

零状态响应:a= [1 4 4]; %将y (t )各阶导数的系数放在向量a 中b= [1 3]; %将f (t )各阶导数的系数放在向量b 中sys = tf(b, a); %求系统函数systd = ; %定义时间间隔t = 0 : td : 10; %定义时间向量f = exp(-t).*u(t); %将f (t )表示出来y = lsim(sys, f, t); %求系统的零状态响应yplot(t, y); %绘出零状态响应的波形xlabel('t(sec)'); % 这行代码是给出x 坐标的标签ylabel('y(t)'); % 这行代码是给出y 坐标的标签grid on输入波形图:a= [1 4 4]; %将y(t)各阶导数的系数放在向量a中b= [1 3]; %将f(t)各阶导数的系数放在向量b中sys = tf(b, a); %求系统函数systd = ; %定义时间间隔t = 0 : td : 10; %定义时间向量f = exp(-t).*u(t);plot(t,f);xlabel('t(sec)'); % 这行代码是给出x坐标的标签ylabel('f(t)');grid on三 实验原理:1、 离散卷积和:调用函数:conv ()∑∞-∞=-==i i k f i f f f conv S )()(1)2,1(为离散卷积和, 其中,f1(k), f2 (k) 为离散序列,K=…-2, -1, 0 , 1, 2, …。

实验4___MATLAB程序设计__4学时

实验4___MATLAB程序设计__4学时

程序2: 程序 : 首先建立函数文件f2c.m。 首先建立函数文件 。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 的命令窗口调用该函数文件。 然后在 的命令窗口调用该函数文件 clt temperature:'); : x=f2c(y) 输出情况为: 输出情况为: Input Fahrenheit temperature:70 : c= 21.1111 x= 21.1111
4.2.3 循环结构 1.for语句 . 语句 for语句的格式为: 语句的格式为: 语句的格式为 for 循环变量 表达式 表达式 表达式 循环变量=表达式 表达式2:表达式 表达式1:表达式 表达式3 循环体语句 end 其中表达式1的值为循环变量的初值 表达式2的值 的值为循环变量的初值, 其中表达式 的值为循环变量的初值,表达式 的值 为步长,表达式3的值为循环变量的终值 步长为1时 的值为循环变量的终值。 为步长,表达式 的值为循环变量的终值。步长为 时, 表达式2可以省略 可以省略。 表达式2可以省略。
2.switch语句 . 语句 switch语句根据表达式的取值不同,分别执行不同 语句根据表达式的取值不同, 语句根据表达式的取值不同 的语句,其语句格式为: 的语句,其语句格式为: switch 表达式 case 表达式 表达式1 语句组1 语句组 case 表达式 表达式2 语句组2 语句组 …… case 表达式 表达式m 语句组m 语句组 otherwise 语句组n 语句组 end
例4-8 一个三位整数各位数字的立方和等于该数本身则 称该数为水仙花数。输出全部水仙花数。 称该数为水仙花数。输出全部水仙花数。 程序如下: 程序如下: for m=100:999 m1=fix(m/100); %求m的百位数字 求 的百位数字 m2=rem(fix(m/10),10); %求m的十位数字 求 的十位数字 m3=rem(m,10); %求m的个位数字 求 的个位数字 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end 输出的水仙花数为: 输出的水仙花数为:153、370、371、407 、 、 、

Matlab实验4 Simulink系统仿真

Matlab实验4 Simulink系统仿真

模块形状
表 7.2 常用的输入信号源模块表 功能说明 恒值常数,可设置数值 阶跃信号 线性增加或减小的信号 正弦波输出 信号发生器,可以产生正弦、方波、锯齿波和随 机波信号 从文件获取数据 从当前工作空间定义的矩阵读数据
仿真时钟,输出每个仿真步点的时间 输入模块
2. 接收模块库(Sinks) 接收模块是用来接收模块信号的,常用的接收模块如表 7.3 所示。
Matlab实验讲义
实验四 Simulink系统仿真
要求: 1、掌握Simulink常用输入、输出、运算模块。 2、掌握Simulink模型的建立及系统仿真方法。 实验类型:综合性 学时分配:3学时 Simulink 是面向框图的仿真软件。 7.1 演示一个 Simulink 的简单程序 【例 7.1】创建一个正弦信号的仿真模型。 步骤如下: (1) 在 MATLAB 的命令窗口运行 simulink 命令,或单击工具栏中的 图标,就可以打 开 Simulink 模块库浏览器(Simulink Library Browser) 窗口,如图 7.1 所示。
7.2.2 Simulink 的模型窗口
模型窗口由菜单、工具栏、模型浏览器窗口、模型框图窗口以及状态栏组成。
菜单 工具栏
模型浏览器
模型框图
状态栏
图7.5 双窗口模型窗口
1. 状态栏
3
Matlab实验讲义
2. 工具栏 模型窗口工具栏如图 7.6 所示。
创建并编译生成exe文件
展示父系统 打开调试器
开始仿真 结束仿真
4. 模块的删除 要删除模块,应选定待删除模块,按 Delete 键;或者用菜单“Edit”Æ“Clear”或“Cut”; 或者用工具栏的“Cut”按钮。

数字信号处理MATLAB实验报告 4

数字信号处理MATLAB实验报告 4
这就是经常称之为傅立叶级数的变换形式。在这里, 也是模拟角频率。可以看到,
时域的连续函数造成频率域的非周期谱,频域函数的离散造成时域函数的周期性。 结论:周期连续时间函数对应于一非周期离散频域变换函数。
3、非周期离散时间信号 x(n) 的傅立叶变换 X (e j ) 可以表示为

X (e j ) x(n)e jn n
DFT 的性质
两个序列 x1(n) 和 x2 (n) 都是 N 点有限长序列,设
X1(k) DFT[x1],
X 2 (k) DFT[x2 ]
线性
DFT[ax1(n) bx2 ] aX1(k) bX 2 (k), 式中 a,b 为任意常数。
圆周移位
一个有限长序列 x (n) 的圆周移位定义

x x
(n)] (n)]
用 X R (k ) 和 X I (k ) 分别表示实部和虚部序列的 DFT ,即
X R (k) DFT[xr (n)] X I (k) DFT[xi (n)]
而且可以证明得到
X R (k ) X R[(N K )]N X I (k ) X I [(N K )]N 通常称 X R (k) 为 X (k) 的共轭偶部, X I (k) 为 X (k) 的共轭奇部。所以说,对于时 域、频域的 DFT 对应关系来说,序列 x(n) 实部对应于 X (k ) 的共轭偶部,序列 x(n) 的虚
其逆变换为
x(n)

1 N
N 1
X (k )WN nk
k 0
k 0,1,2 N 1 n 0,1, N 1
上机练习:
1. 试 用 Mablab 求 其 有 限 长 序 列 x1(n) (0.8)n (0 n 10) 与

matlab实验四函数编写与程序设计

matlab实验四函数编写与程序设计

实验四:函数编写与程序设计一、实验目的1 . 掌握M文件的创建。

2.掌握函数的编写规则。

3.掌握函数的调用。

4 . 掌握基本的输入输出函数以及显示函数的用法。

5.会用Matlab程序设计实现一些工程算法问题。

二、实验内容1 . 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。

a=input('请输入一个数:')b=input('请输入一个数:');fuhao=input('请输入一个运算符号(+-*/):','s');switch fuhaocase {'+'}he=a+b;disp(['和=',num2str(a),'+',num2str(b),'=',num2str(he)]);case {'-'}he=a-b;disp(['减=',num2str(a),'-',num2str(b),'=',num2str(he)]) case {'*'}he=a*b;disp(['乘=',num2str(a),'*',num2str(b),'=',num2str(he)]) case {'/'}he=a/b;disp(['除=',num2str(a),'/',num2str(b),'=',num2str(he)]) otherwise disp('请输入正确的符号');end2 . 求下列分段函数的值2 2 26,0 56,1,yχχχχχχχχχχχ⎧+-<≠⎪=-+≤≠≠⎨⎪--⎩且-30<10,2且3其他要求:用if语句实现,分别输出x = -5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4. 综合应用程序设计
一、实验目的
1.理解命令.m文件与函数.m文件的异同;
2.掌握定义和调用matlab函数的方法。

二、实验环境
1.计算机
2.matlab软件
三、实验说明
1.实验学时:2学时;
2.学会使用help;
3.编写程序前先写出程序的流程图框架;
4.自主编写调试程序直到正确为止,必要时参考相关资料,;
5.保存整理实验结果,提交实验报告。

四、实验内容
1.教材第365页,完成第4题。

答:代码如下:
function y=wx(x) ;定义函数y=wx(x)
y=1./(0.1+(x-2).^2)+1./(0.01+(x-3).^4); 函数y的关系式
在编程界面上如图:
输出结果如图:
2.编写一个实现两离散序列循环卷积的函数,并实现调用。

(注:调试后可以调用,保存函数文件名为ms4_学号_02.m)
答:直接调用matlab内部函数,写出代码如下:
x1=input('输入序列x1=');
x2=input('输入序列x2=');
N=input('输入序列卷积的长度N=');
y=conv(x1,x2); ;内部函数,x1,x2进行线性卷积运算subplot(2,1,1);
n=0:length(y)-1;
stem(n,y,'.'); ;绘制第一个线性卷积结果图
title('序列x1与x2的卷积结果');
x11=fft(x1,N); ;内部函数,对x1傅里叶变换
x12=fft(x2,N); ;对x2傅里叶变换
y11=x11.*x12; ;相乘
y1=ifft(y11,N); ;内部函数,进行逆傅里叶变换
subplot(2,1,2);
n=0:length(y1)-1;
stem(n,y1,'.'); ;绘制第二个循环卷积结果图
title('循环卷积结果');
调试结果如图:
调用程序:
输出结果:。

相关文档
最新文档