matlab实验4MATLAB基本编程
MATLAB实验报告(1-4)
![MATLAB实验报告(1-4)](https://img.taocdn.com/s3/m/b76ce95849649b6649d74774.png)
信号与系统MATLAB第一次实验报告一、实验目的1.熟悉MATLAB软件并会简单的使用运算和简单二维图的绘制。
2.学会运用MATLAB表示常用连续时间信号的方法3.观察并熟悉一些信号的波形和特性。
4.学会运用MATLAB进行连续信号时移、反折和尺度变换。
5.学会运用MATLAB进行连续时间微分、积分运算。
6.学会运用MATLAB进行连续信号相加、相乘运算。
7.学会运用MATLAB进行连续信号的奇偶分解。
二、实验任务将实验书中的例题和解析看懂,并在MATLAB软件中练习例题,最终将作业完成。
三、实验内容1.MATLAB软件基本运算入门。
1). MATLAB软件的数值计算:算数运算向量运算:1.向量元素要用”[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。
2.x=x0:step:xn.其中x0位初始值,step表示步长或者增量,xn 为结束值。
矩阵运算:1.矩阵”[ ]”括起来;矩阵每一行的各个元素必须用”,”或者空格分开;矩阵的不同行之间必须用分号”;”或者ENTER分开。
2.矩阵的加法或者减法运算是将矩阵的对应元素分别进行加法或者减法的运算。
3.常用的点运算包括”.*”、”./”、”.\”、”.^”等等。
举例:计算一个函数并绘制出在对应区间上对应的值。
2).MATLAB软件的符号运算:定义符号变量的语句格式为”syms 变量名”2.MATLAB软件简单二维图形绘制1).函数y=f(x)关于变量x的曲线绘制用语:>>plot(x,y)2).输出多个图像表顺序:例如m和n表示在一个窗口中显示m行n列个图像,p表示第p个区域,表达为subplot(mnp)或者subplot(m,n,p)3).表示输出表格横轴纵轴表达范围:axis([xmax,xmin,ymax,ymin])4).标上横轴纵轴的字母:xlabel(‘x’),ylabel(‘y’)5).命名图像就在subplot写在同一行或者在下一个subplot前:title(‘……’)6).输出:grid on举例1:举例2:3.matlab程序流程控制1).for循环:for循环变量=初值:增量:终值循环体End2).while循环结构:while 逻辑表达式循环体End3).If分支:(单分支表达式)if 逻辑表达式程序模块End(多分支结构的语法格式)if 逻辑表达式1程序模块1Else if 逻辑表达式2程序模块2…else 程序模块nEnd4).switch分支结构Switch 表达式Case 常量1程序模块1Case 常量2程序模块2……Otherwise 程序模块nEnd4.典型信号的MATLAB表示1).实指数信号:y=k*exp(a*t)举例:2).正弦信号:y=k*sin(w*t+phi)3).复指数信号:举例:4).抽样信号5).矩形脉冲信号:y=square(t,DUTY) (width默认为1)6).三角波脉冲信号:y=tripuls(t,width,skew)(skew的取值在-1~+1之间,若skew取值为0则对称)周期三角波信号或锯齿波:Y=sawtooth(t,width)5.单位阶跃信号的MATLAB表示6.信号的时移、反折和尺度变换:Xl=fliplr(x)实现信号的反折7.连续时间信号的微分和积分运算1).连续时间信号的微分运算:语句格式:d iff(function,’variable’,n)Function:需要进行求导运算的函数,variable:求导运算的独立变量,n:求导阶数2).连续时间信号的积分运算:语句格式:int(function,’variable’,a,b)Function:被积函数variable:积分变量a:积分下限b:积分上限(a&b默认是不定积分)8.信号的相加与相乘运算9.信号的奇偶分解四、小结这一次实验让我能够教熟悉的使用这个软件,并且能够输入简单的语句并输出相应的结果和波形图,也在一定程度上巩固了c语言的一些语法。
matlab基本编程
![matlab基本编程](https://img.taocdn.com/s3/m/7e30c966182e453610661ed9ad51f01dc281570a.png)
例
程序如下: function iftow(x) if x>0
fprintf(‘%f is a positive number\n’,x) else
fprintf(‘%f is not a positive number\n’,x) end
例 计算分段函数值。
程序如下: x=input('请输入x的值:'); if x==10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x)); end y
function f = fact(n) %函数的定义行
% Compute a factorial value. %H1行
% FACT(N) returns the factorial of N, %帮助文 本
% usually denoted by N!
% Put simply, FACT(N) is PROD(1:N). %注释
disp(setstr(abs(c)-1)); elseif c>='0'& c<='9'
disp(abs(c)-abs('0')); else
disp(c); end
例 输入数n,判断其奇偶性
程序如下: n = input('n='), if rem(n,2)==0 A = ‘even’ else A = ‘odd’ end
3.多分支if语句 语句格式为: if 条件1
语句组1 elseif 条件2
语句组2
…… elseif 条件m
语句组m
else 语句组m+1
matlab实验
![matlab实验](https://img.taocdn.com/s3/m/435ed432ccbff121dc36830b.png)
实验一 MATLAB基本操作一、实验目的1、了解MATLAB应用程序环境2、掌握MATLAB语言程序的书写格式和MATLAB语言程序的结构。
3、掌握在MATLAB应用环境下编写程序4、掌握MATALB调试过程,帮助文件5、掌握MATLAB语言上机步骤,了解运行一个MATLAB程序的方法。
6、本实验可在学习完教材第一章后进行。
二、主要仪器及耗材PC电脑,MATLAB6.5软件三、实验内容和步骤1、MATLAB语言上机步骤:(1)、进入系统在C盘或其他盘上找到MATLAB或MATLAB6.5,然后双击其图标打开文件夹。
然后进行编辑源程序->编译->连接->执行程序->显示结果(2)、常用命令编辑切换(F6),编译(F9),运行(CTRL+F9),显示结果(ALT+F5)其它常用命令见“附录一”。
2、有下面的MATLAB程序。
(1)数值计算功能:如,求方程 3x4+7x3 +9x2-23=0的全部根p=[3,7,9,0,-23]; %建立多项式系数向量x=roots(p) %求根(2)绘图功能:如,绘制正弦曲线和余弦曲线x=[0:0.5:360]*pi/180;plot(x,sin(x),x,cos(x));(3)仿真功能:如,请调试上述程序。
3、熟悉MATLAB环境下的编辑命令,具体见附录一。
三、实验步骤1、静态地检查上述程序,改正程序中的错误。
2、在编辑状态下照原样键入上述程序。
3、编译并运行上述程序,记下所给出的出错信息。
4、按照事先静态检查后所改正的情况,进行纠错。
5、再编译执行纠错后的程序。
如还有错误,再编辑改正,直到不出现语法错误为止。
四、实验注意事项1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。
分析讨论对策成功或失败的原因。
2、总结MATLAB程序的结构和书写规则。
五、思考题1、matlab到底有多少功能?2、MATLAB的搜索路径3、掌握使用MATLAB帮助文件实验二 MATLAB 矩阵及其运算一、 实验目的1、了解矩阵的操作,包括矩阵的建立、矩阵的拆分、矩阵分析等2、了解MATLAB 运算,包括算术运算、关系运算、逻辑运算等3、掌握字符串的操作,了解结构数据和单元数据。
MATLAB实验
![MATLAB实验](https://img.taocdn.com/s3/m/4ba9e623bcd126fff7050b22.png)
MATLAB实验一:MATLAB语言基本概念实验实验目的:1. 熟悉MATLAB语言及使用环境;2.掌握MATLAB的常用命令;3.掌握MATLAB的工作空间的使用;4.掌握MATLAB的获得帮助的途径。
5.掌握科学计算的有关方法,熟悉MATLAB语言及其在科学计算中的运用;6.掌握MATLAB的命令运行方式和M文件运行方式;7.掌握矩阵在MATLAB中的运用。
实验方案分析及设计:本次实验主要目的是了解MATLAB的使用环境,以及常用的一些命令的使用;了解矩阵在MATLAB实验中的具体运用,以及相关的一些符号命令的使用。
实验器材:电脑一台,MATLAB软件实验步骤:打开MATLAB程序,将实验内容中的题目依次输入MATLAB中,运行得到并记录结果,最后再对所得结果进行验证。
实验内容及要求:1.熟悉MATLAB的菜单和快捷键的功能2.熟悉MATLAB的命令窗口的使用3.熟悉常用指令的使用format clc clear help lookfor who whos 4.熟悉命令历史窗口的使用5. 熟悉MATLAB工作空间的功能将工作空间中的变量保存为M文件,并提取该文件中的变量6.熟悉MATLAB获取帮助的途径将所有plot开头的函数列出来,并详细给出plotfis函数的使用方法1. 输入 A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2;3 3 3],在命令窗口中执行下列表达式,掌握其含义:A(2, 3) A(:,2) A(3,:) A(:,1:2:3)A(:,3).*B(:,2) A(:,3)*B(2,:) A*BA.*BA^2 A.^2 B/A B./AA=[7 1 5;2 5 6;3 1 5]7 1 52 5 63 1 5>> B=[1 1 1; 2 2 2;3 3 3]1 1 12 2 23 3 3>> A(2, 3)6>> A(:,2)151>> A(3,:)3 1 5>> A(:,1:2:3)7 52 63 5>> A(:,3).*B(:,2)51215>> A(:,3)*B(2,:)10 10 1012 12 1210 10 10>> A*B24 24 2430 30 3020 20 20>> A.*B7 1 54 10 129 3 15>> A^266 17 6642 33 7038 13 46>> A.^249 1 254 25 369 1 25>> B/A0.1842 0.2105 -0.23680.3684 0.4211 -0.47370.5526 0.6316 -0.7105>> B./A0.1429 1.0000 0.20001.0000 0.4000 0.33331.0000 3.0000 0.60002.输入 C=1:2:20,则 C (i )表示什么?其中 i=1,2,3, (10)1到19差为2,i 代表公差3. 试用 help 命令理解下面程序各指令的含义:cleart =0:0.001:2*pi;subplot(2,2,1);polar(t, 1+cos(t))subplot(2,2,2);plot(cos(t).^3,sin(t).^3)subplot(2,2,3);polar(t,abs(sin(t).*cos(t)))subplot(2,2,4);polar(t,(cos(2*t)).^0.5)4计算矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡897473535与⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡638976242之和。
实验四 MATLAB的绘图
![实验四 MATLAB的绘图](https://img.taocdn.com/s3/m/c6fd35433c1ec5da51e27009.png)
西安邮电大学《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_循环结构程序设计_参考解答](https://img.taocdn.com/s3/m/f8ad794176eeaeaad1f330e7.png)
高教社刘卫国《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) 循环结构
第4章 MATLAB编程基础
![第4章 MATLAB编程基础](https://img.taocdn.com/s3/m/482302e16294dd88d0d26bff.png)
(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求解状态空间模型](https://img.taocdn.com/s3/m/c499957c05087632311212e4.png)
实验四 用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);(注:文档可能无法思考全面,请浏览后下载,供参考。
实验4Matlab程序设计1
![实验4Matlab程序设计1](https://img.taocdn.com/s3/m/c91e03e143323968001c92bc.png)
实验4 Matlab程序设计1实验目的:1、掌握建立和执行M文件的方法;2、掌握实现选择结构的方法;3、掌握实现循环结构的方法。
实验内容:1. 从键盘输入一个4位整数,按如下规则加密后输出。
加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。
2. 求分段函数的值。
2x +x-6, x <0且x式-3y = *x2—5x + 6 0Wxc 5 且x 式2及x 式3X2 _ X -1 其他用if语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y值。
3. 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:(1)分别用if语句和swich语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
4. 硅谷公司员工的工资计算方法如下:(1)工作时数超过120小时者,超过部分加发15% ;(2)工作时数低于60小时者,扣发700元;(3)其余按每小时84元计发。
试编程按输入的工号和该号员工的工时数,计算应发工资。
5. 设计程序,完成两位数的加、减、乘、除四则运算。
即:输入两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。
6. 建立5X 6矩阵,要求输出矩阵的第n行元素。
当n值超过矩阵的行数时,自动转为输出矩阵的最后一行元素,并给出出错信息。
7. 产生20 个两位随机整数,输出其中小于平均数的偶数。
实验代码及实验结果1.>> a=input(' 请输入一个四位整数:');请输入一个四位整数:9988>> a1=fix(a/1000);>> a2=rem(fix(a/100),10);>> a3=rem(fix(a/10),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);>> b=a1;a1=a3;a3=b;>> b=a2;a2=a4;a4=b;>> c=a1*1000+a2*100+a3*10+a4;>> disp(c)3.>> a=input C请输入一个四位整数:一); 请输人一个四f立整數:3988 »(a/1000);>> a2=ren(fix(a/100), 10);>> a3=ren(fiK(a/10)?10);>> 血(a, ID);» al=re&(al+^ 10);>> a^rsB(a2+7f 10);>> a3=rem(a3+7? 10):>> 丑"“血(M+C 10);>> b=al:a1=a3:a3=b;» b=a2:a2=a4:a4=b,» c-al *100(Hai2*l 0(H-a3*l 0+ttl;>> disp(c)55662.x=input('请输入x的值:');if x<0 & x~=-3y=x92+x-6;elseif x>=0 & x<5 & x~=2 & x~=3y=x.A2+5.*x+6elsey=x.A2-x-1;end请输入孟的値:[-瓦-亠0,1, 2t2. E f 3, 5]7 =29. 0000 IL ODDO -I. 0000 -1.0000 1. OODO 2.7500 5. QOOD(1) if语句:a=i nput('请输入成绩:');ig.ooooif a>=90 & a<=100disp('A');elseif a>=80 & a<90disp('B');elseif a>=70 & a<80disp('C');elseif a>=60 & a<70disp('D');elseif a<60 &a>=0disp('E');elsedisp('输入有误!'); end( 2) switch 语句:a=input(' 请输入成绩:'); switch fix(a/10)case{9}disp('A');case{8}disp('B');case{7}disp('C');case{6}disp('D');case nu m2cell(2:5)disp('E')otherwisedisp('输入有误!');end请输入咸绩:80E请输入咸绩;5E请输入成绩:1212输入有误I»4.n=i nput('请输入工号:’);a=i nput('请输入工作小时数:'); if a>=120 y=a*84+a*84*0.15;elseif a<120 & a>=60y=a*84;elsey=a*84-700;disp(y);end请输入工号:30请输入工作小时数:231232。
数字图像处理及MATLAB实现实验四——图像变换
![数字图像处理及MATLAB实现实验四——图像变换](https://img.taocdn.com/s3/m/74ed3194ed3a87c24028915f804d2b160b4e86a3.png)
数字图像处理及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));。
MATLAB的基本操作与编程基础
![MATLAB的基本操作与编程基础](https://img.taocdn.com/s3/m/666b70e47d1cfad6195f312b3169a4517723e5c7.png)
MATLAB的基本操作与编程基础实验⼀MATLAB的基本操作、编程基础姓名:学号:⽹选班级:1.简述实验⽬的及实验原理答:本次实验的⽬的是为了了解matlab软件和matlab语⾔的⽤法。
简要介绍了⼀些常⽤的运算符和函数,还有⼀些信号系统在matlab软件⾥怎样实现的。
实验原理是通过matlab软件实现信号系统的⼀些计算。
2.记录实验内容3、4的命令或程序及图形内容3.画出以下各序列在给定区间的图形。
1) x(n)=2δ(n+2)-δ(n-4)+δ(n) ,-5≤n≤52) x(n)=n[u(n)-u(n-10)]+10e-0.3(n-10)[u(n-10)-u(n-20)],0≤n≤203) x(n)=2-cos(0.4πn)- cos(0.8πn),0≤n≤50答:(1)程序为:n=-5:5;x1=[(n+2)==0];x2=[(n-4)==0];x3=[(n+0)==0];x=2.*x1-x2+x3;stem(n,x);xlabel('n');ylabel('x');(2)程序为:%x(n)=n[u(n)-u(n-10)]+10e-0.3(n-10)[u(n-10)-u(n-20)],n=0:20;x1=[n>=0];x2=[n>=10];x3=[n>=20];x4=exp(-0.3).^(n-10);x=x1-x2+10.*x4.*(x2-x3);stem(n,x);xlabel('n 作者:陈哲');ylabel('x');(3)程序为:%x(n)=2-cos(0.4|Dn)- cos(0.8|Dn£? ,0?ün?ü50%x(n)=2-cos(0.4|Dn)- cos(0.8|Dn£? ,0?ün?ü50n=0:50;x1=cos(0.4*n.*pi);x2=cos(0.8*n.*pi);x=2-x1-x2;subplot(211);stem(n,x);xlabel('n 作者:陈哲');ylabel('x');title('采样点很少的情况');n1=0:0.01:50;x11=cos(0.4*n1.*pi);x21=cos(0.8*n1.*pi);x0=2-x11-x21;subplot(212);stem(n1,x0);xlabel('n 作者:陈哲');ylabel('x');title('采样点很多的情况');4.令x(n)={1,2,3,4,5,6,7,6,5,4,3,2,1},画出下列序列的图形1) x1(n)=2x(n-5)-3x(n-4)2) x2(n)=x(3-n)-x(n)x(n-2)3) x e(n)和x o(n) ---通过编写求x e(n)、x o(n)的M-file来实现(需要给出测试函数) x e(n) 和x o(n)分别为x(n)的偶部和奇部解:(1)程序为:%x1(n)=2x(n-5)-3x(n-4),x(n)={1,2,3,4,5,6,7,6,5,4,3,2,1}%x1=x(n-5) x2=x(n-4)x=[1,2,3,4,5,6,7,6,5,4,3,2,1];n=0:12;[x1,n1]=sigshift(x,n,5);[x2,n2]=sigshift(x,n,4);[y,n3] = sigadd((2.*x1),n1,(-3.*x2),n2)subplot(211);stem(n,x);xlabel('n');ylabel('x(n)');subplot(212);stem(n3,y);xlabel('n');ylabel('x1(n)=2x(n-5)-3x(n-4)');⾃定义函数有:%实现信号加的M-file :y(n)=x1(n)+x2(n)function [y,n] = sigadd(x1,n1,x2,n2)n = min(min(n1),min(n2)):max(max(n1),max(n2));y1 = zeros(1,length(n)); y2 = y1;y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;y = y1+y2;%移位的M-file :y(n)=x(n-n0)function [y,n] = sigshift(x,m,n0)n = m+n0; y = x;(2)程序为:%x2(n)=x(3-n)-x(n)x(n-2)%x0=x(3-n);x1=x(n)x(n-2);x=[1,2,3,4,5,6,7,6,5,4,3,2,1];n0=0:12;[x00,n10] = sigshift(x,3,n0);[x0,n1] = sigfold(x00,n10);[x11,n11] = sigshift(x,2,n0);[x1,n2] = sigmult(x,n0,x11,n11);[x2,n] = sigadd(x0,n1,-x1,n2);stem(n,x2);xlabel('n');ylabel('x2(n)');title('x2(n)=x(3-n)-x(n)x(n-2)');⾃定义函数有:%实现信号乘的M-file : y(n)=x1(n) x2(n)function [y,n] = sigmult(x1,n1,x2,n2)n = min(min(n1),min(n2)):max(max(n1),max(n2));y1 = zeros(1,length(n)); y2 = y1;y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; y = y1 .* y2;%折叠的M-file :y(n)=x(-n)function [y,n] = sigfold(x,n)y = fliplr(x); n = -fliplr(n);(3)程序为:奇部函数:function [y1,m1 ] =jishu( x,n )for i=1:2:nif i<=nm1((i+1)/2)=(i+1)/2;y1((i+1)/2)=x(i);endend偶部函数:function [y1,m1 ] =oushu( x,n )for i=2:2:nif i<=nm1((i)/2)=(i)/2;y1((i)/2)=x(i);endend测试程序:x=[1,2,3,4,5,6,7,6,5,4,3,2,1];n0=1:13;n=13;[y1,m1]=jishu(x,n);[y2,m2]=oushu(x,n);subplot(311);stem(n0,x);xlabel('n');ylabel('x(n)');title('x(n)');subplot(312);stem(m1,y1);xlabel('n');ylabel('x(n)??2?');title('x(n)??2?'); subplot(313);stem(m2,y2);xlabel('n');ylabel('x(n)??2?');title('x(n)??2?');。
实验4答案 Matlab程序设计1
![实验4答案 Matlab程序设计1](https://img.taocdn.com/s3/m/b803e40c79563c1ec5da71bb.png)
实验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入门 实验报告](https://img.taocdn.com/s3/m/1669cb8559f5f61fb7360b4c2e3f5727a5e92494.png)
matlab入门实验报告Matlab入门实验报告一、引言Matlab是一种功能强大的数学软件,广泛应用于科学计算、数据分析和工程设计等领域。
本实验报告将介绍Matlab的基本使用方法和一些常见的数学计算实例。
二、Matlab的基本操作1. Matlab的安装和启动Matlab可以从官方网站下载并安装在计算机上。
安装完成后,双击桌面上的Matlab图标即可启动软件。
2. Matlab的界面和基本操作Matlab的界面由主窗口、命令窗口和编辑器等组成。
在命令窗口中可以输入和执行Matlab命令,编辑器可以编写和保存Matlab脚本。
3. Matlab的数据类型和变量Matlab支持多种数据类型,包括数值型、字符型、逻辑型等。
可以使用赋值语句将值存储在变量中,例如:x = 5。
4. Matlab的基本数学运算Matlab可以进行基本的数学运算,如加减乘除、幂运算等。
例如,输入命令:y = 2*x + 3,即可计算出变量y的值。
三、Matlab的数学函数1. Matlab的数学函数库Matlab内置了大量的数学函数,可以进行各种复杂的数学运算和数据处理。
例如,sin函数用于计算正弦值,sqrt函数用于计算平方根。
2. Matlab的矩阵运算Matlab是一个强大的矩阵计算工具,可以进行矩阵的加减乘除、转置、求逆等运算。
例如,输入命令:A = [1 2; 3 4],即可创建一个2x2的矩阵。
3. Matlab的符号计算Matlab还支持符号计算,可以进行代数运算和求解方程等。
例如,输入命令:syms x; solve(x^2 - 2*x - 3 = 0, x),即可求解方程的根。
四、Matlab的数据可视化1. Matlab的绘图功能Matlab提供了丰富的绘图函数,可以绘制各种类型的图形,如曲线图、散点图、柱状图等。
例如,输入命令:plot(x, y),即可绘制x和y的曲线图。
2. Matlab的图像处理Matlab还可以进行图像处理,如读取、显示和编辑图像。
matlab实验4MATLAB基本编程
![matlab实验4MATLAB基本编程](https://img.taocdn.com/s3/m/d87d22d4eefdc8d377ee323c.png)
实验 4 MATLAB 基本编程一、实验目的1. 熟悉 MATLAB 的脚本编写2. 熟悉 MATLAB 的函数编写3. 熟悉 MATLAB 的变量使用4. 熟悉 MATLAB 的程序控制结构 二、实验内容1. 分别选用 if 或 switch 结构实现下述函数表示。
-1 x ≤-af(x)=x/a-a<x<a 1x ≥a2. 根据 e x=1+x+x 2/2!+ +x n/n!+ 近似计算指数,当与指数函数的误差小于0.01 时停止,分别用 for 和 while 结构实现。
3. 记录上题的调试过程。
刚开始对于指数直接用 e ,后来改成 exp4. 提示用户输入 1 或 2,如输入 1 时,执行第一题脚本;如输入 2 时,提示用户输入随机数序列长度,然后执行第二题的函数。
5. 从键盘输入数值,迭代计算 x n+1=3/(x n +2)。
三、思考题1. 创建脚本实现随机系列的各元素由大到小排列, 其中随机数服从 U(-5,9)的均匀分布,并且序列长度为 10。
2. 创建函数实现指定长度的随机数序列的各元素由大到小的排列,其中随机数服从N(3,9)的高斯分布。
3. 分别用 for 和 while 结构实现下述函数计算。
(1) sin(x)-cos(x)+sin(2x)+cos(2x)++sin(nx)+(-1)n cos(nx)1 2 3(2) e AtAe At...A n e A n t , 其中 A0 1 20 0 1分别 if或 switch 结构实现下列函数表示x asin( x)y 11a) ax bb (xf ( x, y)cos(x)y2af ( x)1b xcsin( x) cos( x) otherwise1d ) cxdc (xd0 xdfunction y=function1(x,a)if (x<=-a)y=-1;elseif (x<a&x>-a)y=x/a;elsey=1;endfunction output=function2(x,a)switch x&acase x<=(-a)output=-1;case x>(-a)&x<aoutput=x/a;otherwiseoutput=1;endfunction y=function3(x)y=0;for i=0:infy=y+(x^i/factorial(i));if(exp(x)-y<0.01)breakendendfunction y=function4(x)y=0;i=0;while(exp(x)-y>0.01)y=y+(x^i/factorial(i));i=i+1;endfunction n=function5()r=input('please input 1 or 2:' ); switch rcase 1disp(function1(1,2));case 2x=input('input a number:');disp(function3(x));endfunction y=function6()n=input('input a number :');y=1.5;if n==0y=1.5;elsefor x=1:1:ny=3/(y+2);endendfunction y=function7n=input('请输入 n 的值 :'); a=normrnd(3,9,1,n);y=fliplr(sort(a))function y=function8n=input('n=');x=input('x=');y=0;for i=1:ns=sin(i*x)+(-1)^i*cos(i*x); y=y+s;enddisp(y);function function9x=input('x=');n=1;y=0;while n<=10s=sin(n*x)+(-1)^n*cos(n*x);y=y+s;n=n+1;enddisp(y);function y=function10 A=[1,2,3;0,1,2;0,0,1]; n=input('n=');t=input('t=');y=0;for i=1:1:nx=A^i*exp(A^i*t);y=y+x;enddisp(y);function y=function11 A=[1,2,3;0,1,2;0,0,1]; n=input('n=');t=input('t=');y=0;while(n)x=A^n*exp(A^n*t);y=y+x;n=n-1;endy=y+exp(A*t);disp(y);function p=f(x,y)x=input(' 请输入 x 的值 :') y=input(' 请输入 y 的值 :') if y==1p=sin(x);elseif y==2p=cos(x);elsep=sin(x)*cos(x);endfunction f=function13(x,y) switch ycase 1f=sin(x);case 2f=cos(x);otherwisef=sin(x)*cos(x);end脚本a=unifrnd(-5,9,1,10); y=sort (a);y=rot90(y)。
Matlab的基本操作和基本编程
![Matlab的基本操作和基本编程](https://img.taocdn.com/s3/m/634f2e66f242336c1eb95e79.png)
实验名称:Matlab 的基本操作和基本编程
实验目的和要求:
1、了解Matlab 的表达式和变量;
2、通过熟悉数组运算、矩阵运算及其他基本运算,掌握Matlab 的基本运算;
3、通过数组函数、矩阵函数等操作,掌握Matlab 的基本函数。
实验内容:
1 表达式和变量
1.1 数字表达式
1.2 常用运算符
1.3 变量的定义
2 数组
2.1 一维数组的创建
2.2 一维子数组查找和赋值
2.3 二维数组
2.4 特殊数组
2.5 数组运算
3 矩阵
3.1 常用的特殊矩阵
3.2 矩阵运算
3.3 矩阵求逆
4 建立.M 文件,编程实现以下功能
4.1 求10!
4.2 解线性方程组
231241020
325
w x y x y z w x z w y z +-=⎧⎪+-=⎪⎨-+=⎪⎪+-=⎩ 本次作业
提交一个实验报告,实验报告内容包括:实验内容1、2、3的上机实例(每个小标题举例子一个)。
例如
1.3 变量的定义:
例 a=(100*0.003)/6.0 %末尾不加“;” 按Enter 键后直接显示结果。
a =
0.0500
注意:对复数变量可以类似赋值。
Matlab 中的永久变量
eps(足够小的正数) pi (圆周率的近似值) inf (正无穷大) i,j (虚数单位) 例 a=sin(pi/2) %sin( )为Matlab 中的正弦函数。
a =
1。
数学建模实验报告Matlab的基本操作编程
![数学建模实验报告Matlab的基本操作编程](https://img.taocdn.com/s3/m/0a270e05e87101f69e319560.png)
wilyes11收集 博客(与学习无关):/u/1810231802MATLAB 基本操作、编程一、 实验目的及意义1.熟悉MATLAB 软件的用户环境; 2.了解MATLAB 软件的一般命令; 3.掌握MATLAB 向量操作与矩阵运算函数; 4.掌握MATLAB 软件的基本符号运算命令; 5. 掌握MATLAB 语言编程的循环、条件和选择结构。
二、实验内容1. MATLAB 软件的向量操作及矩阵运算练习;2. 使用MATLAB 软件进行符号运算练习;3. 用MA TLAB 语言编写命令M-文件和函数M-文件;三、实验步骤1.在D 盘建立一个自己的文件夹; 2.开启软件平台——MATLAB ,将你建立的文件夹加入到MA TLAB 的搜索路径中。
3.利用帮助了解函数max, min, sum, mean, sort, length ,rand, size 和diag 的功能和用法。
4.开启MATLAB 编辑窗口,键入你编写的M 文件(命令文件或函数文件); 5.保存文件(注意将文件存入你自己的文件夹)并运行; 6.若出现错误,修改、运行直到输出正确结果; 7. 写出实验报告,并浅谈学习心得体会。
四、实验要求与任务根据实验内容和步骤,完成以下具体实验,按要求写出实验报告。
1.设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E,R,O,S 分别为单位阵、随机阵、零阵和对角阵,试通过数值计算验证22E R RS A O S +⎡⎤=⎢⎥⎣⎦。
2.某零售店有9种商品的单件进价(元)、售价(元)及一周的销量如下表,问哪种商品的利润最大,哪种商品的利润最小;按收入由小到大,列出所有销量 568 1205 753 580 395 2104 1538 810 6943.建立一个命令M-文件:求所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。
例如,153是一个水仙花数,因为。
Matlab基础及应用实验指导书
![Matlab基础及应用实验指导书](https://img.taocdn.com/s3/m/414959af910ef12d2bf9e718.png)
Matlab 基础及应用实验指导书实验一Matlab的基本操作实验目的:掌握Matlab的基本操作方法实验内容:1、使用变量与基本运算;2、向量与矩阵的处理;3、程序流程控制;4、M 文件编辑。
参照教材相关内容向量生成:x=linspace(0,2*pi);y=sin(x);plot(x,y)plot(x,sin(x),'o',x,cos(x),'x',x,sin(x)+cos(x),'*');数据导入1.菜单File—Import—Data,支持Excel、txt等;2.在Workspace窗口中双击数据表名,在Array Editor中将数据复制进去即可。
绘图1将数据表的各列数值分别赋予变量x、y、z等,格式如下:x=sheetname(:,1), y=sheetname(:,2), z=sheetname(:,3);2用命令plot(x,y,’XXXX’)绘制图形,单引号中的符号表示点线的属性,如线形、颜色、点的形状等,若用双对数坐标画图则命令为loglog(x,y);3在弹出的绘图界面中用菜单View—Property Editor编辑图形属性,如字体大小、数据点形状、横纵坐标名称、绘图区域颜色等;4绘图方法2:在数组编辑器上点击Plot Selection按钮,选择图形的类型即可;5绘图方法3:菜单File—New—Figure创建新的图形,在图形编辑器中Figure Palette面板点击2D Axes,点击右下角Add Data选择图表类型和坐标轴的数据源,度分布图将坐标轴由线形改为对数即可。
6hold on/off命令:叠绘命令,切换绘图的保持功能;7绘制双纵轴:7.1plotyy(x1,y1,x2,y2):分别用左/右侧y轴表示两条曲线;7.2plotyy(x1,y1,x2,y2,FUN):FUN是字符串格式,用来指定绘图的函数名,可以由多个。
自动控制原理MATLAB仿真实验指导书(4个实验)
![自动控制原理MATLAB仿真实验指导书(4个实验)](https://img.taocdn.com/s3/m/4e8a88edaa00b52acfc7ca6a.png)
自动控制原理MATLAB仿真实验实验指导书电子信息工程教研室实验一典型环节的MA TLAB仿真一、实验目的1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。
2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。
3.定性了解各参数变化对典型环节动态特性的影响。
二、SIMULINK的使用MATLAB中SIMULINK是一个用来对动态系统进行建模、仿真和分析的软件包。
利用SIMULINK功能模块可以快速的建立控制系统的模型,进行仿真和调试。
1.运行MA TLAB软件,在命令窗口栏“>>”提示符下键入simulink命令,按Enter键或在工具栏单击按钮,即可进入如图1-1所示的SIMULINK仿真环境下。
2.选择File菜单下New下的Model命令,新建一个simulink仿真环境常规模板。
图1-1 SIMULINK仿真界面图1-2 系统方框图3.在simulink仿真环境下,创建所需要的系统。
以图1-2所示的系统为例,说明基本设计步骤如下:1)进入线性系统模块库,构建传递函数。
点击simulink下的“Continuous”,再将右边窗口中“Transfer Fen”的图标用左键拖至新建的“untitled”窗口。
2)改变模块参数。
在simulink仿真环境“untitled”窗口中双击该图标,即可改变传递函数。
其中方括号内的数字分别为传递函数的分子、分母各次幂由高到低的系数,数字之间用空格隔开;设置完成后,选择OK,即完成该模块的设置。
3)建立其它传递函数模块。
按照上述方法,在不同的simulink的模块库中,建立系统所需的传递函数模块。
例:比例环节用“Math”右边窗口“Gain”的图标。
4)选取阶跃信号输入函数。
用鼠标点击simulink下的“Source”,将右边窗口中“Step”图标用左键拖至新建的“untitled”窗口,形成一个阶跃函数输入模块。
matlab实验四函数编写与程序设计
![matlab实验四函数编写与程序设计](https://img.taocdn.com/s3/m/4f5e000110a6f524ccbf85c8.png)
实验四:函数编写与程序设计一、实验目的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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 MATLAB 基本编程
一、实验目的
1. 熟悉MATLAB 的脚本编写
2. 熟悉MATLAB 的函数编写
3. 熟悉MATLAB 的变量使用
4. 熟悉MATLAB 的程序控制结构
二、实验内容
1. 分别选用if 或switch 结构实现下述函数表示。
-1 x ≤-a
f(x)= x/a -a <x <a
1 x ≥a
2. 根据e x =1+x+x 2/2!+…+x n /n!+…近似计算指数,当与指数函数的误差小于0.01时停止,分别用for 和while 结构实现。
3. 记录上题的调试过程。
刚开始对于指数直接用e ,后来改成exp
4. 提示用户输入1或2,如输入1时,执行第一题脚本;如输入2时,提示用户输入随机数序列长度,然后执行第二题的函数。
5. 从键盘输入数值,迭代计算x n+1=3/(x n +2)。
三、思考题
1. 创建脚本实现随机系列的各元素由大到小排列,其中随机数服从U(-5,9)的均匀分布,并且序列长度为10。
2. 创建函数实现指定长度的随机数序列的各元素由大到小的排列,其中随机数服从N(3,9)的高斯分布。
3. 分别用for 和while 结构实现下述函数计算。
(1) sin(x)-cos(x)+sin(2x)+cos(2x)+……+sin(nx)+(-1)n cos(nx)
(2) 分别if 或switch 结构实现下列函数表示
⎪⎪⎪⎭
⎫ ⎝⎛=+++100210321,...A e A Ae e t A n At At n 其中⎪⎩⎪⎨⎧===otherwise x x y x y x y x f )cos()sin(2)cos(1)sin(),(⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧>≤<--≤<≤<--≤=d x d x c d x d c c x b b x a a x a b a x x f 0)(11)(10)(
function y=function1(x,a)
if (x<=-a)
y=-1;
elseif (x<a&x>-a)
y=x/a;
else
y=1;
end
function output=function2(x,a)
switch x&a
case x<=(-a)
output=-1;
case x>(-a)&x<a
output=x/a;
otherwise
output=1;
end
function y=function3(x)
y=0;
for i=0:inf
y=y+(x^i/factorial(i));
if(exp(x)-y<0.01)
break
end
end
function y=function4(x)
y=0;
i=0;
while(exp(x)-y>0.01)
y=y+(x^i/factorial(i));
i=i+1;
end
function n=function5()
r=input('please input 1 or 2:' ); switch r
case 1
disp(function1(1,2));
case 2
x=input('input a number:');
disp(function3(x));
end
function y=function6()
n=input('input a number :');
y=1.5;
if n==0
y=1.5;
else
for x=1:1:n
y=3/(y+2);
end
end
function y=function7
n=input('请输入n的值:'); a=normrnd(3,9,1,n);
y=fliplr(sort(a))
function y=function8
n=input('n=');
x=input('x=');
y=0;
for i=1:n
s=sin(i*x)+(-1)^i*cos(i*x); y=y+s;
end
disp(y);
function function9
x=input('x=');
n=1;
y=0;
while n<=10
s=sin(n*x)+(-1)^n*cos(n*x);
n=n+1;
end
disp(y);
function y=function10
A=[1,2,3;0,1,2;0,0,1];
n=input('n=');
t=input('t=');
y=0;
for i=1:1:n
x=A^i*exp(A^i*t);
y=y+x;
end
disp(y);
function y=function11
A=[1,2,3;0,1,2;0,0,1];
n=input('n=');
t=input('t=');
y=0;
while(n)
x=A^n*exp(A^n*t);
y=y+x;
n=n-1;
end
y=y+exp(A*t);
function p=f(x,y)
x=input('请输入x的值:') y=input('请输入y的值:') if y==1
p=sin(x);
elseif y==2
p=cos(x);
else
p=sin(x)*cos(x);
end
function f=function13(x,y) switch y
case 1
f=sin(x);
case 2
f=cos(x);
otherwise
f=sin(x)*cos(x);
end
a=unifrnd(-5,9,1,10); y=sort (a);
y=rot90(y)。