Matlab应用课程设计[本站推荐]

时间:2019-05-15 11:11:45下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Matlab应用课程设计[本站推荐]》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Matlab应用课程设计[本站推荐]》。

第一篇:Matlab应用课程设计[本站推荐]

课程设计名称:Matlab应用课程设计

课程设计题目:题目(如:Matlab运算与受控源电阻电路分析)

初始条件:

1.Matlab7.0以上版本软件;

2.课程设计辅导资料:“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应用”、线性代

数及相关书籍等;

3.先修课程:高等数学、线性代数、电路、Matlab应用实践及信号处理类相关课程等。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.课程设计时间:1.5周,分散;

2.课程设计内容:根据指导老师给定的7套题目,按规定选择其中1套完成;

3.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设

计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表等),并对实验结果进行分析和总结。具体设计要求包括:

① 初步了解Matlab、熟悉Matlab界面、进行简单操作;

② MATLAB的数值计算:创建矩阵、矩阵运算、多项式运算、线性方程组、数值统计;

③ 基本绘图函数:plot, plot3, mesh, surf等,要求掌握以上绘图函数的用法、简单图形标注、简单

颜色设定等;

④ 使用文本编辑器编辑m文件,函数调用;

⑤ 能完成简单的电路Matlab编程分析;

⑥ 按要求参加课程设计实验演示和答辩等。

4.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:

① 目录;

② 与设计题目相关的理论分析、归纳和总结;

③ 与设计内容相关的原理分析、建模、推导、可行性分析;

④ 程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;

⑤ 课程设计的心得体会(至少500字);

⑥ 参考文献(不少于5篇);

⑦ 其它必要内容等。

时间安排:1.5周(分散进行)

指导老师:电信1104李景松祝立华

电信1105祝立华阙大顺

电信1106阙大顺李景松

第二篇:MATLAB通信原理课程设计报告

MATLAB通信原理课程设计报告

目 录

1课题名称.....................................................................................................................1 2课程设计的方案和基本原理.....................................................................................1

2.1信息论基本计算...............................................................................................1 2.2数字信号基带传输系统...................................................................................1 3课程设计步骤.............................................................................................................3

3.1信息论基本计算的设计步骤...........................................................................3 3.2数字信号基带传输系统的设计步骤...............................................................3 4课程设计结果和结果分析论证.................................................................................4

4.1信息论的基本运算结果...................................................................................4 4.2数字信号基带传输系统的设计结果...............................................................6

5、心得体会................................................................................................................11 6附件...........................................................................................................................11 6.1信息论基本计算.............................................................................................11 6.2数字信号基带传输系统.................................................................................14 7 评分表......................................................................................错误!未定义书签。

1课题名称

(1)信息论基本计算。

(3)数字信号基带传输系统设计

2课程设计的方案和基本原理

2.1信息论基本计算

2.1.1平均信息量:平均每个符号所能提供的信息量。

H(X)。

2.1.2离散信道容量:信道容量是信道所能传送的最大的信息量。C=maxI(X;Y)R=I(X;Y)=H(X)-H(XY)2.1.3信源编码过程:Huffman编码的意义是,用最少的编码长度来表达符号的信息。为了使平均码长度最小,将发生概率较大的符号用比较短的码组来表示,将发生概率较小的符号用较长的码组实现,以得到最佳的变长编码,减少冗余度,提高系统传输的效率。

2.2数字信号基带传输系统

2.2.1数字基带信号的码型:由于数字基带信号是数字信息的电脉冲表示,不同形式的基带信号(又称为码型)有不同的频谱结构和功率谱分布。不同的码型有不同的优点,常用的码型有单/双极性码、非归零/归零码、数字双相码(曼彻斯特码)、密勒码、AMI码、HDB3码。

2.2.2单/双极性码:单极性码是用电平1来表示二元信息中的‘1’,用电平0来表示二元信息中的0,电平在整个码元的持续时间里保持不变,记做NRZ码。双极性码与单极性码的区别仅在于它用电平-1来表示二元信息中的‘0’。

2.2.3非归零/归零码:归零码与非归零码的区别仅在于,非归零码在整个码元持续时间内保持电平值不变,而归零码的码元持续时间的前一半时间内保持,而后一半时间内回到0.1 2.2.4数字双相码(曼彻斯特码):此种码型采用在一个码元的持续时间中央时刻从0到1的跳变来表示1,从1到0的跳变来表示0。或者与之相反用在一个码元的持续时间中央时刻从0到1的跳变来表示0,从1到0的跳变来表示1。

2.2.5密勒码:该码型是双相码的变型。它采用码元中央时刻跳变表示信息1即前半时间的电平和前一码元的后半时间的电平相同,中间跳变。遇到信息0做如下处理:首先对0的码元在整个持续时间内保持同一电平值,其次若此0的前一信息是一则码元的电平同前面信息1的码元后半时间电平相同,若前一信息为0,则与前面码元的电平相反。

2.2.6 AMI码、HDB3码: AMI码是传号交替反转码。其编码规则是将消息码中的“1”交替变成“+1”和“-1”,将消息码中的“0”仍保持为“0”。HDB3码的全称是3阶高密度双极性码。首先将信息码变换成AMI码,然后检查AMI码中连0的情况,没有发现4个以上连0的码元串时码型不需变换,仍为AMI码的形状。若发现4个以上连0的码元串时,则根据相应规则把第四个0变换成相应符号。

2.2.7码型的功率谱分布:数字基带信号一般是随机信号,因此分析随机信号的频谱特性要用功率诺密度来分析。一般来说,求解功率谱是一件相当困难的事,但由于上述几种码型比较简单,我们可以求出其功率谱密度函数。

对单极性非归零码、单极性归零码、双极性非归零码和双极性归零码这4种码。由于统计的独立性,课由由功率谱公式画出功率谱波形图。数字双相码的功率相关公式如下:“y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y”。密勒码的相关功率公式如下:

“x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*cos(6*x)-8*cos(7*x)+2*cos(8*x))./(17+8*cos(8*x));t=x.*x;miler=miler./t;”

对于AMI码和HDB3码的功率谱函数,则需要进行实际的码型进行分析。

3课程设计步骤

3.1信息论基本计算的设计步骤

3.1.1信源平均信息量的计算(以高斯分布的信源为例):

通过系统产生一个高斯随机信源,再求出它的平均信息量。3.1.2离散信道容量的计算(以输入符号等概分布为例):

编写hmessage函数求出平均互信息,编写dmessage函数,求出离散信息熵,调用hmessage函数和dmessage函数得出hf和hx,最后信道容量c=hx-hf。3.1.3信源编码过程(以Huffman编码为例):

先编写huffman函数,对系列排序并求出huffman编码。调用huffman函数和dmessage函数,得出编码后的码字。

3.2数字信号基带传输系统的设计步骤

3.2.1单/双极性归零/非归零码:先对原始码型进行相应的码型变换,画出码型子图,再由功率谱公式画出功率谱波形图。

3.2.2数字双相码:先进行码型变换,再画出功率谱,功率相关公式如下:“y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y”。

3.2.3密勒码:密勒码的相关功率公式如下:

“x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*cos(6*x)-8*cos(7*x)+2*cos(8*x))./(17+8*cos(8*x));t=x.*x;miler=miler./t;”

3.2.4AMI码:编写AMI函数,求的AMI码型变换。编写t2f函数,功能是将时域信号做傅里叶变换到频域。为了求AMI码的功率谱密度,编写AMIpower函数,该函数中又调用了t2f函数。3.2.5HDB3码:编写HDb3函数和t2f函数,分别实现HDb3编码和傅里叶变换。调用HDb3函数和t2f函数,得出原序列图、编码后的序列图和功率谱图。

4课程设计结果和结果分析论证

4.1信息论的基本运算结果

4.1.1信源平均信息量的计算(以高斯分布的信源为例):

图4.1.1连续信源平均信息量

4.1.2离散信道容量的计算(以输入符号等概分布为例)4

图4.1.2离散信道容量

信道容量为信源的平均信息量减去互信息量。

4.1.3信源编码过程(以Huffman编码为例)

图4.1.3 huffman编码

哈弗曼编码是把出现概率较大的用较短的码元来实现,概率出现较小的用较长的码元实现。4.2数字信号基带传输系统的设计结果

4.2.1单极性非归零码及其功率谱

图4.2.1单极性非归零码码型和功率谱

输入的序列是x=[1 1 0 1 0 0 1 0 1 0 0 1],输出的序列是y=[1 1 0 1 0 0 1 0 1 0 0 1]经编码规则验证是正确的。功率谱显示,码型的功率分布有分段性,并以某些频率为中心。

4.2.2单极性归零码及其功率谱

图4.2.2单极性归零码码型和功率谱

由图可知,输入的序列是x=[1 1 0 1 0 0 1 0 1 0 0 1],输出的序列是y=[10 10 00 10 00 00 10 00 10 00 00 10] 经编码规则验证是正确的。功率谱显示,码型的功率分布有分段性,并以某些频率为中心。

4.2.3双极性非归零码及其功率谱

图4.2.3双极性非归零码码型和功率谱

由图可知输入的序列为x=[1 1 0 1 0 0 1 0 1 0 0 1],输出的序列为y=[1 1-1 1-1-1 1-1 1-1-1 1], 经编码规则验证是正确的。功率谱显示,码型的功率分布有分段性,并以某些频率为中心。

4.2.4双极性归零码及其功率谱密度

图4.2.4双极性归零码码型和功率谱

由图可知,输入序列为x=[1 1 0 1 0 0 1 0 1 0 0 1],输出序列为y=[10 10-10 10-10-10 10-10 10-10-10 10]。经编码规则验证是正确的。功率谱显示,码型的功率分布有分段性,并以某些频率为中心。

4.2.5数字双相码及其功率谱

图4.2.5数字双相码码型和功率谱

由图可知,输入的序列为x=[1 1 0 1 0 0 1 0 1 0 0 1],输出的序列为y=[10 10 01 10 01 01 10 01 10 01 01 10].功率谱显示,码型的功率分布有分段性。

4.2.6密勒码及其功率谱

图4.2.6密勒码码型和功率谱

信息的输入序列是x=[1 1 0 1 0 0 1 0 1 0 0 1]。

4.2.7 AMI码及其功率谱

图4.2.7AMI码码型和功率谱

输入序列是x=[1 1 0 1 0 0 1 0 1 0 0 1]。

4.2.8 HDB3码及其功率谱

图4.2.8 HDB3码码型和功率谱

由此图的功率谱与AMI码的功率谱比较可知,HDB3码与AMI码是相似的,HDB3码是AMI码的变形。

5、心得体会

6附件

6.1信息论基本计算

6.1.1、信源平均信息量的计算(高斯分布的信源)x=randn(1,100000);%产生N(0,1)高斯源 px=1/sqrt(2*pi)*exp(-(x-1).^2/2);%计算概率 l=-mean(log2(px))%计算熵

6.1.2、编程实现离散信道容量的计算(以输入符号等概分布为例)function r=dmessage(x,n)%参数x表示概率矩阵,n是符号的数目 r=0;for i=1:n r=r-x(i)*log(x(i))/log(2);end disp('此离散信源的平均信息量为:');r %直接在命令窗口中调用dmessage函数,也可以在其它函数中调用 dmessage([0.25,0.25,0.25,0.25],4)

6.1.3、离散信道容量的计算 %求互信息的函数文件如下 function r=hmessage(x,f,nx,my)%x为输出的信源分布,f为转移概率矩阵,nx为输出的符号可选个数 %my为输出的符号个数 sum=0;for i=1:nx for j=1:my 11 %通过式子p(x,y)=p(x)p(y/x)来求p(x,y),用t表示 t=f(i,j)*x(i);%求平均互信息量 if t~=0 sum=sum-t*log(f(i,j))/log(2);end;end;end;r=sum;disp('平均互信息量为:');%利用函数dmessage来求信源的熵,利用函数hmessage来求平均互信息量 x=[0.25,0.25,0.25,0.25];f1=[1/2,1/4,1/4,0,0,0 0,1/2,1/4,1/4,0,0 0,0,1/2,1/4,1/4,0 0,0,0,1/2,1/4,1/4,];hf1=hmessage(x,f1,4,6);hx=dmessage(x,4);c1=hx-hf1 %信道容量

6.1.4、哈弗曼编码的实现 p=[1/4,1/4,1/4,1/8,1/8];[h,l]=huffman1(p)%哈弗曼编码的实现函数如下 function [h,l]=huffman(p)if(length(find(p<0))~=0)error('Not a prob,negative component');end if(abs(sum(p)-1)>10e-10)error('Not a prob.vector,component do not add to 1')end n=length(p);q=p;12 m=zeros(n-1,n);for i=1:n-1 [q,l]=sort(q);m(i,:)=[l(1:n-i+1),zeros(1,i-1)];q=[q(1)+q(2),q(3:n),1];end for i=1:n-1 c(i,:)=blanks(n*n);end c(n-1,n)='0';c(n-1,2*n)='1';for i=2:n-1

c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)==1))-(n-2):n*(find(m(n-i+1,:)==1)));c(n-i,n)='0';c(n-i,n+1:2*n-1)=c(n-i,1:n-1);c(n-i,2*n)='1';for j=1:i-1

c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)==j+1)-1)+1:n*find(m(n-i+1,:)==j+1));end;end for i=1:n h(i,1:n)=c(1,n*(find(m(1,:)==i)-1)+1:find(m(1,:)==i)*n);ll(i)=length(find(abs(h(i,:))~=32));end l=sum(p.*ll);%在命令窗口或M文件里调用haffman函数 p=[1/2,1/4,1/8,1/16,1/16];[h,l]=huffman(p)

6.2数字信号基带传输系统

6.2.1、单极性非归零码以及功率谱的实现 function y=djx(x)%本函数实现将输入的一段二进制代码编码为相应的单极性非归零码输出 %输入x为二进制码,输出y为编好的码

%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示 grid=300;t=0:1/grid:length(x);for i=1:length(x)if(x(i)==1)for j=1:grid y((i-1)*grid+j)=1;end else for j=1:grid y((i-1)*grid+j)=0;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);hold on;axis([0,i,m-0.1,M+0.1]);%采用title命令来实现标记出各码元对应的二元信息

title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=100;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);14 y(1)=1;dan1=y.*y;dan1=dan1/4;subplot(2,1,2);subplot(2,1,2);plot(x,dan1);axis([1,4,0,0.015]);title('单极性非归零码的功率谱');%函数调用t=[1 1 0 1 0 0 1 0 1 0 0 1];djx(t);

6.2.2、单极性归零码及其功率谱实现 function y=djxglm(x)grid=200;t=0:1/grid:length(x);for i=1:length(x)if(x(i)==1)for j=1:grid/2 y(grid/2*(2*i-2)+j)=1;y(grid/2*(2*i-1)+j)=0;end else for j=1:grid/2 y(grid*(i-1)+j)=0;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);title(' 1 1 0 1 0 0 1 15

0 1 0 0 1 ');fs=50;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=2;dan2=y.*y;dan2=dan2/4;subplot(2,1,2);plot(x,dan2);axis([1,5,0,0.05]);title('单极性归零码的功率谱');%在命令窗口或M文件中调用函数 t=[1 1 0 1 0 0 1 0 1 0 0 1];djxglm(t);

6.2.3、双极性非归零码及其功率谱的实现 function y=sjx(x)%本函数实现将输入的一段二进制代码编码为相应的双极性非归零码输出 %输入x为二进制码,输出y为编好的码 grid=300;t=0:1/grid:length(x);for i=1:length(x)if(x(i)==1)for j=1:grid y((i-1)*grid+j)=1;end else for j=1:grid y((i-1)*grid+j)=-1;end 16 end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令来实现标记出各码元对应的二元信息

title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=100;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=1;dan1=y.*y;dan1=dan1/4;subplot(2,1,2);plot(x,dan1);axis([1,4,0,0.02]);title('双极性非归零码的功率谱');%在命令窗口或M文件中调用函数 t=[1 1 0 1 0 0 1 0 1 0 0 1];sjx(t);

6.2.4、双极性归零码及其功率谱的实现 function y=sjxglm(x)%本函数实现将输入的一段二进制代码编码为相应的双极性归零码输出%输入x为二进制码,输出y为编好的码 grid=300;t=0:1/grid:length(x);for i=1:length(x)17

if(x(i)==1)for j=1:grid/2 y(grid/2*(2*i-2)+j)=1;y(grid/2*(2*i-1)+j)=0;end else for j=1:grid/2 y(grid/2*(2*i-2)+j)=-1;y(grid/2*(2*i-1)+j)=0;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令来实现标记出各码元对应的二元信息title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=50;x=1:1/fs:5;y=sin(pi*x);y=y./(pi*x);y(1)=2;dan2=y.*y;dan2=dan2/4;subplot(2,1,2);plot(x,dan2);axis([1,5,0,0.025]);title('双极性归零码的功率谱');%在命令窗口或M文件中调用函数

t=[1 1 0 1 0 0 1 0 1 0 0 1];sjxglm(t);

6.2.5、数字双相码及其功率谱的实现 function y=szsxm(x)%本函数实现将输入的一段二进制代码编码为相应的数字双相码输出 %输入x为二进制码,输出y为编好的码 grid=300;t=0:1/grid:length(x);for i=1:length(x)if(x(i)==1)for j=1:grid/2 y(grid/2*(2*i-2)+j)=1;%用从1到0的电平跳变来表示‘1’ y(grid/2*(2*i-1)+j)=0;end else for j=1:grid/2 y(grid/2*(2*i-2)+j)=0;%用从0到1的电平跳变来表示‘0’ y(grid/2*(2*i-1)+j)=1;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令来实现标记出各码元对应的二元信息

title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=100;x=1:1/fs:5;19

y=sin(pi*x/2);y=y./(pi*x/2);y(1)=1;mache=sin(pi*x/2).*sin(pi*x/2);mache=mache.*y;mache=mache.*y;subplot(2,1,2);plot(x,mache);axis([1,5,0,0.5]);title('数字双相码的功率谱');%在命令窗口或M文件中调用函数 t=[1 1 0 1 0 0 1 0 1 0 0 1];szsxm(t);

6.2.6、密勒码及其功率谱的实现 function y=mlm(x)%该函数实现密勒编码,输入码序列为x grid=100;t=0:1/grid:length(x);%定义时间序列 i=1;%由于第一码元的编码不定,我们直接给出 if(x(i)==1)for j=1:grid/2 y(grid/2*(2*i-2)+j)=0;%前半时间为0 y(grid/2*(2*i-1)+j)=1;%后半时间为1 end else for j=1:grid%若输入0 y(grid*(i-1)+j)=0;%码元持续时间内为0 end end for i=2:length(x)%开始进行密勒编码

if(x(i)==1)%若输入信息为1 for j=1:grid/2 y(grid/2*(2*i-2)+j)=y(grid/2*(2*i-3)+grid/4);%前半时间与前一码元后半时间值相同

y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);%后半时间与前半时间相反 end else if(x(i-1)==1)%反之,若前一信息为1,输入为0 for j=1:grid y(grid*(i-1)+j)=y(grid/2*(2*i-3)+grid/4);%所有时间与前一码元后半时间值相同 end else%前一信息为0 for j=1:grid y(grid*(i-1)+j)=1-y(grid/2*(2*i-3)+grid/4);%所有时间与前一码元后半时间值相反 end end end end y=[y,y(i*grid)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令来实现标记出各码元对应的二元信息

title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');fs=100;x=1:1/fs:5;x=x*pi;miler=(23-2*cos(x)-22*cos(2*x)-12*cos(3*x)+5*cos(4*x)+12*cos(5*x)+2*c 21 os(6*x)-8*cos(7*x)+2*cos(8*x))./(17+8*cos(8*x));t=x.*x;miler=miler./t;miler(1)=0.2;x=x/pi;subplot(2,1,2);plot(x,miler);axis([1,5,0,0.3]);title('密勒码的功率谱')%下面是mlm函数的调用 t=[1 1 0 1 0 0 1 0 1 0 0 1];mlm(t);

6.2.7、AMI码及其功率谱的实现 *t2f.m文件:傅里叶变换 function X=t2f(x,dt)X=fftshift(fft(x))*dt;

function y=AMI(x)grid=300;t=0:1/grid:length(x);i=1;if(x(i)==1)for j=1:grid y(j)=1;h=1;end else for j=1:grid y(j)=0;end end for i=2:length(x)if(x(i)==1)if h==1 for j=1:grid y(grid*(i-1)+j)=-1;h=-1;end else if h==-1 for j=1:grid y(grid*(i-1)+j)=1;h=1;end end end else for j=1:grid y(grid*(i-1)+j)=0;end end end y=[y,x(i)];M=max(y);m=min(y);subplot(2,1,1);plot(t,y);axis([0,i,m-0.1,M+0.1]);%采用title命令来实现标记出各码元对应的二元信息title(' 1 1 0 1 0 0 1 0 1 0 0 1 ');Rt=0.5;k=14;N=2^k;L=64;M=N/L;Rb=2;Ts=1/Rb dt=Ts/L;df=1/(N*dt)T=N*dt Bs=N*df/2;t=[-T/2+dt/2:dt:T/2];f=[-Bs+df/2:df:Bs];Ep=zeros(size(f));for ii=1:50 n=1;while rem(n,2)~=0, a=round(rand(1,M));n=length(find(a==1));end bb=find(a==1);cc=bb(1:2:length(bb));b=a;

b(cc)=-ones(size(cc));ami=zeros(1,N);for tt=1:Rt*Ts/dt;ami(tt+[0:M-1]*L)=b;end AMI=t2f(ami,dt);P=AMI.*conj(AMI)/T;Ep=(Ep*(ii-1)+P)/ii;end aa=30+10*log10(Ep+eps);subplot(2,1,2);plot(f,aa);axis([-5,+5,-50,50]);title('AMI功率谱密度')%AMI函数的调用

t=[1 1 0 1 0 0 1 0 1 0 0 1];AMI(t);

6.2.8、HDB3码及其功率谱的实现 function X=t2f(x,dt)X=fftshift(fft(x))*dt;*HDB3_encoding.m文件:

function [changed_hdb3]=Hdb3_encoding(pcm)last_V=-1;last_one=-1;M=length(pcm);changed_hdb3=zeros(size(pcm));count=0;for i=1:M if(pcm(i)==1)changed_hdb3(i)=-last_one;last_one=changed_hdb3(i);count=0;else count=count+1;

if(count==4)count=0;changed_hdb3(i)=-last_V;last_V=changed_hdb3(i);if(i>4)if(changed_hdb3(i)*last_one==-1)changed_hdb3(i-3)=changed_hdb3(i);end end last_one=changed_hdb3(i);end end end %函数调用 clear all close all k=input(‘取样点数=2^k,k=[4]’);if isempty(k), k=14;end N=2^k;L=64;M=N/L;Rb=1;Ts=1/Rb;dt=Ts/L;df=1/(N*dt);T=N*dt;Bs=N*df/2;t=[-T/2+dt/2:dt:T/2];f=[-Bs+df/2:df:Bs];Ep=zeros(size(f));for ii=1:30 a=rand(1,M)>0.75;b=Hdb3_encoding(a);hdb=zeros(L,M);init=zeros(L,M);for loop=1:L/2 init(loop,:)=a;end for loop=1:L/2 hdb(loop,:)=b;end hdb=reshape(hdb,1,N);init=reshape(init,1,N);HDB=t2f(hdb,dt);P=HDB.*conj(HDB)/T;Ep=(Ep*(ii-1)+P)/ii;end init figure(9)subplot(3,1,1)plot(t,init,'m')grid on axis([0,T/10,-1.5,1.5])set(gca,'XTick',[0:1:T/10])xlabel('t(Tb)')ylabel('s(t)')title(‘原始序列’)subplot(3,1,2)plot(t,hdb,'b')grid on axis([0,T/10,-1.5,1.5])set(gca,'XTick',[0:1:T/10])xlabel('t(Tb)')ylabel('s(t)')title(‘HDB3编码序列’)subplot(3,1,3)aa=30+10*log10(Ep+eps);plot(f,aa,'r')grid on axis([-5,5,-50,50])xlabel('f(Rb)')ylabel('Ps(f)')title(‘HDB3码功率谱密度’)

第三篇:Matlab课程设计报告(简单计算器)

1、设计目的

运用MATLAB实现MATLAB的GUI程序设计。

2、题目分析

2.1课程设计的基本要求:

A.熟悉和掌握MATLAB 程序设计方法。B.掌握MATLAB GUI程序设计。2.2课程设计的内容

要求利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A.具有友好的用户图形界面。实现十进制数的加、减、乘、除、乘方、取模等简单计算。

B.科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。

C.能够保存上次历史计算的答案,显示答案存储器中的内容。D.有清除键,能清除操作。

E.独立存储器功能,使之可以直接输入存储器,可与存储器中的数值相加减。能够清除独立存储器中的内容。2.3题目分析

本题目通过MATLAB的GUI程序设计较为简单,在GUI设计中主要用到三种控件,显示框用到文本编辑框(edit text),说明框用到静态文本框(Static text),数字以及运算等按钮用到命令按钮(push button)。然后再通过各个按钮的回调函数,实现简单的计算功能。

3、总体设计

首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,以及32个命令按钮,调整好各控件大小、颜色,整体布局如图所示:

然后通过双击个按钮来改写其属性,在m文件中编写其回调函数,最后在运行调试。

4、具体设计 4.1 各功能界面设计 GUI设计界面:

4.2 各功能模块实现 算法设计:

A.数字键设计:0—9以及小数点函数都一样,只是参数不同: global jj textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','1');else

textString =strcat(textString,'1');set(handles.text1,'String',textString)end jj=0;B.四则运算函数:

textString = get(handles.text1,'String');textString =strcat(textString,'+');set(handles.text1,'String',textString)C.科学计算函数:

textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String','0.');else

a = strread(textString, '%f');a=sin(a);set(handles.text1,'String',a)end 或

textString=handles.text1;textString=sin(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))D.退格键:通过取屏幕值,计算出其字符长度,然后取其前N-1项的值来实现退格: global jj textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','0.');else

ss=char(textString);l=length(textString);textString=ss(1:l-1);set(handles.text1,'String',textString)end jj=0;E.清屏键函数:

set(handles.text1,'String','0.');F.右键函数:

gtext('大家好;我是智能机器人-my name is seven');close(gcf);4.3 各模块实现结果 A.数字键:

B.四则运算函数:

C.科学计算函数: Sin45的计算结果=

经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。5.2问题和解决方法:

a.小数点可以连续输入。解决方法是:用strfind函数查看文本框里有几个小数点,如果已经有一个了,再按小数点就保持不变。b.按过运算符号后一个数不等于一个数,比如:输入1,按等号,会出来一个3,经过长时间分析得知,这是由于在按运算符号时,系统记录了文本框里的数但没有清空,才会出现这种问题。解决方法是再申请一个不同于加减乘除的另一个符号,并将按过运算符后记录的数值置0。

c.按对数函数键时,负数也能运算,通过加入if判断语句来判断输入的值是否为负,若为负则输出error.6、心得体会

通过本次的MATLAB课程设计,让我对MATLAB尤其是其GUI设计的功能有了进一步的了解,认识到了它功能的强大。在MATLAB简单计算器的设计中,了解了关于MATLAB图形用户界面的部分控件的使用方法;利用MATLAB的GUI提供的很多实用的控件,方便用于设计属于自己的图形界面。

7、附录(源代码)

function varargout = jisuanqi(varargin)% JISUANQI M-file for jisuanqi.fig

% JISUANQI, by itself, creates a new JISUANQI or raises the existing % singleton*.%

% H = JISUANQI returns the handle to a new JISUANQI or the handle to % the existing singleton*.%

% JISUANQI('CALLBACK',hObject,eventData,handles,...)calls the local % function named CALLBACK in JISUANQI.M with the given input arguments.%

% JISUANQI('Property','Value',...)creates a new JISUANQI or raises the % existing singleton*.Starting from the left, property value pairs are % applied to the GUI before jisuanqi_OpeningFunction gets called.An % unrecognized property name or invalid value makes property application % stop.All inputs are passed to jisuanqi_OpeningFcn via varargin.%

% *See GUI Options on GUIDE's Tools menu.Choose “GUI allows only one % instance to run(singleton)”.%

% See also: GUIDE, GUIDATA, GUIHANDLES % Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help jisuanqi % Last Modified by GUIDE v2.5 04-Dec-2012 17:06:43 % Begin initialization codeDO NOT EDIT

%---Executes just before jisuanqi is made visible.function jisuanqi_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)% Get default command line output from handles structure varargout{1} = handles.output;

function edit1_Callback(hObject, eventdata, handles)% hObject handle to edit1(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles emptyto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj

textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','1');else

textString =strcat(textString,'1');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj

textString = get(handles.text1,'String');

if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','3');else

textString =strcat(textString,'3');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton13.function pushbutton13_Callback(hObject, eventdata, handles)% hObject handle to pushbutton13(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj

textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','-');else

textString = get(handles.text1,'String');textString =strcat(textString,'-');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton21.function pushbutton21_Callback(hObject, eventdata, handles)% hObject handle to pushbutton21(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;

textString=sin(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%a = strread(textString, '%f')%textString=get(handles.text1,'String')%textString=strcat(textString,'sin')%set(handles.text1,'String',textString)%---Executes on button press in pushbutton23.function pushbutton23_Callback(hObject, eventdata, handles)% hObject handle to pushbutton23(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj

textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','4');else

textString =strcat(textString,'4');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj

textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','6');else

textString =strcat(textString,'6');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton15.function pushbutton15_Callback(hObject, eventdata, handles)% hObject handle to pushbutton15(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj

textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','/');else

textString = get(handles.text1,'String');textString =strcat(textString,'/');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton24.function pushbutton24_Callback(hObject, eventdata, handles)% hObject handle to pushbutton24(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;

textString=cos(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton26.function pushbutton26_Callback(hObject, eventdata, handles)% hObject handle to pushbutton26(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj

textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','7');else

textString =strcat(textString,'7');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)global jj

textString = get(handles.text1,'String');

if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','9');else

textString =strcat(textString,'9');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton17.function pushbutton17_Callback(hObject, eventdata, handles)% hObject handle to pushbutton17(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)set(handles.text1,'String',')');else

textString =strcat(textString,')');set(handles.text1,'String',textString)end

%---Executes on button press in pushbutton27.function pushbutton27_Callback(hObject, eventdata, handles)% hObject handle to pushbutton27(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;

textString=tan(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton29.function pushbutton29_Callback(hObject, eventdata, handles)% hObject handle to pushbutton29(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)

global jj

textString = get(handles.text1,'String');if(strcmp(textString,'0.')==1)&(jj==0)set(handles.text1,'String','0.');else

textString =strcat(textString,'0');set(handles.text1,'String',textString)end jj=0;

%---Executes on button press in pushbutton11.function pushbutton11_Callback(hObject, eventdata, handles)% hObject handle to pushbutton11(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)set(handles.text1,'String','0.');

%---Executes on button press in pushbutton19.function pushbutton19_Callback(hObject, eventdata, handles)% hObject handle to pushbutton19(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString=get(handles.text1,'String')s=eval(textString)

set(handles.text1,'String',s)

%---Executes on button press in pushbutton30.function pushbutton30_Callback(hObject, eventdata, handles)% hObject handle to pushbutton30(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)textString = get(handles.text1,'String');%strcmp(textString,'0.')textString=handles.text1;

textString=cot(str2num(get(handles.text1,'String'))*pi/180);set(handles.text1,'String',num2str(textString))%---Executes on button press in pushbutton32.function pushbutton32_Callback(hObject, eventdata, handles)% hObject handle to pushbutton32(see GCBO)% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)%open('1.bmp')

gtext('大家好;我是智能机器人-my name is seven');

%------function J_Callback(hObject, eventdata, handles)% hObject handle to J(see GCBO)

% eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA)close(gcf);

8、参考书目:

[1]《MATLAB语言及其在电子信息工程中的应用》 王洪元主编 清华大学出版社

[2] 《MATLAB中GUI的应用》 王洪元主编 清华大学出版社

第四篇:牛头刨床课程设计matlab程序

lo2o3=0.65;l2=0.09250;l4=1.1245;l5=0.281125;lo3d=1.11878;w2=8*pi/3;m4=16;m5=4;m6=68;g=9.8;j4=1.6;j5=0.03;k2=-38.18;

for i=1:13;k2=k2+30;if k2>90&k2<270 k4=pi+atan((lo2o3+l2*sin(k2*pi/180))/(l2*cos(k2*pi/180)));else k4=atan((lo2o3+l2*sin(k2*pi/180))/(l2*cos(k2*pi/180)));end

k5=asin((lo3d-l4*sin(k4))/l5);sf= l4*cos(k4)+l5*cos(k5);%得到牛头刨头的位移

l3=l2*cos(k2*pi/180)/cos(k4);B1=[cos(k4),-l3*sin(k4),0,0;sin(k4),l3*cos(k4),0,0;0,-l4*sin(k4),-l5*sin(k5),-1;0,l4*cos(k4),l5*cos(k5),0;];M=inv(B1)*(w2*[-l2*sin(k2*pi/180);l2*cos(k2*pi/180);0;0;]);%求得矩阵,其中M=[v3;w4;w5;vf]

B2=[-M(2)*sin(k4),-M(1)*sin(k4)-M(2)*l3*cos(k4),0,0;M(2)*cos(k4),M(1)*cos(k4)-M(2)*l3*cos(k4),0,0;0,-M(2)*l4*cos(k4),-l5*M(3)*cos(k5),0;0,-M(2)*l4*sin(k4),-l5*M(3)*sin(k5),0;];N=inv(B1)*(-B2*M+w2*[-l2*w2*cos(k2*pi/180);-l2*w2*sin(k2*pi/180);0;0;]);%求得加速度矩阵,其中N=[a3;a4;a5;af]

vf=M(4);af=N(4);X(i,:)=[k2,sf,vf,af];%收集Φ2与牛头刨头位移,速度,加速度与Φ2的数据 a4x=-N(2)*l4*sin(k4)/2-M(2)*M(2)*l4*cos(k4)/2;a4y=N(2)*l4*cos(k4)/2-M(2)*M(2)*l4*sin(k4)/2;a5x=2*a4x-N(3)*l5*sin(k5)/2-M(3)*M(3)*l5*cos(k5)/2;a5y=2*a4y+N(3)*l5*cos(k5)/2-M(3)*M(3)*l5*sin(k5)/2;%求出构件4,5质心的加速度,以便惯性力的计算

p4x=-m4*a4x;p4y=-m4*a4y;M4=-j4*N(2);p5x=-m5*a5x;p5y=-m5*a5y;M5=-j5*N(3);p6=-m6*af;%构件4,5,6的惯性力及惯性力矩

if sf>(0.03+0.50237-0.6)&sf<(0.50237-0.03)fc=14000;

else fc=0;end %判断fc的取值

M1=[1,0,1,0,0;0,1,0,0,0;0,0,-1,0,1;0,-1,0,1,0;0,l5*sin(k5)/2,-l5*cos(k5)/2,l5*sin(k5)/2,-l5*cos(k5)/2;];N1=[m6*g;-fc-p6;m5*g-p5y;-p5x;-M5;];

F1=inv(M1)*N1;%其中F1对应的量为:F1=[fn;r56x;r56y;r45x;r45y;]

M2=[1,0,1,0,0;0,1,0,1,0;cos(k4),sin(k4),0,0,0;(l4/2-l3)*sin(k4),-(l4/2-l3)*cos(k4),l4*sin(k4)/2,-l4*cos(k4)/2,0;l2*sin(k2*pi/180),-l2*cos(k2*pi/180),0,0,1;];N2=[F1(4)-p4x;F1(5)-p4y+m4*g;0;F1(5)*l4*cos(k4)/2-F1(4)*l4*sin(k4)/2-M4;0;];

F2=inv(M2)*N2;%其中F2对应的量为:F2=[r34x;r34y;r14x;r14y;Mb;]

Y(i,:)=[k2,F2(1), F2(2), F2(3), F2(4), F1(4), F1(5), F1(2), F1(3)];%记录不同角度时反力r34x,r34y,r14x,r14y,r45x,r45y,r56x,r56y的数据

Z(i,:)=[k2,F2(5),p4x,p4y,M4,p5x,p5y,M5,p6];%记录Φ2与平衡力矩的关系 end

disp(X);disp(Y);disp(Z);

plot(X(:,1),X(:,2),'-')grid on title('s6--Φ2函数')xlabel('变量Φ2(°)')ylabel('变量s6(m)')

figure plot(X(:,1),X(:,3),'-')grid on title('v6--Φ2函数')xlabel('变量Φ2(°)')ylabel('变量v6(m/s)')

figure plot(X(:,1),X(:,4),'-')grid on title('a6--Φ2函数')xlabel('变量Φ2(°)')ylabel('变量a6(m*m/s)')

figure plot(Z(:,1),Z(:,2),'-')grid on title('Mb--Φ2函数')xlabel('变量Φ(2°)')ylabel('变量Mp(N*m)')

21.8200

0.4211

-0.6064

-8.0130

51.8200

0.3698

-0.9980

-4.4055

81.8200

0.3010

-1.1660

-0.9019

111.8200

0.2286

-1.1154

2.4802

141.8200

0.1661

-0.8479

5.9804

171.8200

0.1273

-0.3571

9.5994

201.8200

0.1257

0.3339

12.1179

231.8200

0.1703

1.0781

10.6189

261.8200

0.2546

1.5373

2.9031

291.8200

0.3495

1.3924

-7.1580

321.8200

0.4180

0.7490-12.0727

351.8200

0.4411

-0.0000-11.1982

381.8200

0.4211

-0.6064

-8.0130

1.0e+004 *

0.0022

-2.3453

0.2943

0.8812-0.0177

-0.2917

-1.4577-0.0136

-1.4545

0.0052

-2.2130

0.1751

0.7778

-0.1467

-1.4317

0.0132

-1.4300

0.0094

0.0082

-2.1335

0.0379

0.7263

0.0064

-1.4065

0.0295

-1.4061

0.0258

0.0112

-2.1010

-0.0982

0.7208

0.1370

-1.3821

0.0239

-1.3831

0.0202

0.0142

-2.1175

-0.2177

0.7654

0.2345

-1.3569

0.0011

-1.3593

-0.0028

0.0172

-2.1882

-0.3021

0.8650

0.2979

-1.3309

-0.0209

-1.3347

-0.0250

0.0202-0.0257

0.0232-0.0008

0.0262 0.0247

0.0292 0.0169

0.0322-0.0160

0.0352-0.0322

0.0382-0.0177

1.0e+003 *

0.0218 0.5449

0.0518 0.2996

0.0818 0.0613

0.1118-0.1687

0.1418-0.4067

0.1718-0.6528

0.2018-0.8240

0.2318-0.7221

0.2618-2.3215-2.5278-2.7700-2.8882-2.7690-2.5408-2.3453

1.0591 1.7092

1.9584 1.8379

1.3691 0.5646-0.5201-1.6948-2.5276-0.3238-0.2504-0.0653

0.1760

0.3396 0.3653 0.2943 0.0640 0.0351 0.0074-0.0198-0.0481-0.0767-0.0968-0.0853-0.0229

1.0184

1.2128

1.3932

1.4309

1.2724 1.0512 0.8812-0.0053

0.0044

0.0095

0.0080

0.0003-0.0097-0.0127-0.0001

0.0163

0.3193 0.2692 0.1076-0.1408-0.3350-0.3763-0.2917-0.0114-0.0062-0.0013 0.0035 0.0085 0.0137 0.0174 0.0151 0.0040-1.3128-1.3235-1.3791-1.4515-1.4869-1.4806-1.4577 0.0320 0.0176 0.0037-0.0099-0.0240-0.0384-0.0484-0.0426-0.0115-0.0215

0.0031

0.0282

0.0205

-0.0119

-0.0279

-0.0136-0.0013

0.0011

0.0024

0.0020

0.0001-0.0024-0.0032-0.0000

0.0041-1.3176

-1.3278

-1.3803

-1.4487

-1.4821

-1.4761

-1.4545

0.0001

-0.0001

-0.0001

-0.0001

-0.0000

0.0001

0.0002

0.0000

-0.0002

-0.1974

0.2918

-2.4196

0.0572

0.0104

-0.0100

0.0286

0.4867

0.3218

-1.3363

0.0964

-0.0077

-0.0172

0.0482

0.8209

0.3518

0.0001

0.0898

-0.0129

-0.0161

0.0449

0.7615 0.3818

1.0591

0.0640

-0.0053

-0.0114

0.0320

0.5449

0.0026

-0.0001

-0.0019

0.0001

-0.0032

0.0002

-0.0013

0.0001

第五篇:《MATLAB语言及其应用》教案

MATLAB语言及其应用

任课教师:罗靖宇

任课班级:09通信(1)(2)

教材:MATLAB程序设计与应用(第二版)

作 者:刘卫国主编 出版社:高等教育出版社

内容:

书籍简介:本书以MATLAB 7.0版为蓝本介绍MATLAB功能与应用强调理论和实践相结合贴近读者需要注重讲清有关数学方法和算法原理前提下介绍MATLAB功能;注重和有关学科领域结合,突出应用书中有许多应用实例些实例既是对MATLAB重点和难点诠释又可以更好地帮助读者应用MATLAB来解决实际问题具有很强代表性。

全书分为基础篇应用篇和实验篇基础篇包括MATLAB系统环境MATLAB数据及其运算MATLAB矩阵分析与处理 MATLAB程序设计MATLAB图MATLAB数值计算MATIAB符号计算应用篇包括MATLAB图形用户界面设计MATLAB Notebook使用MATLAB Simulink 仿真软件MATLAB外部程序接口技术MATLAB应用实验篇和教学内容相配合包括15实验以帮助读者更好地上机操作。本书可作为高等学校理工科各专业大学生或研究生学习教材也可供广大科技工作者参考。

第1章 MATLAB系统环境

1.1 MATLAB概貌

1.1.1 MATLAB 发展

1.1.2 MATLAB 主要功能

1.1.3 MATLAB功能演示

1.2 MATLAB环境 准备

1.2.1 MATLAB 安装

1.2.2 MATLAB 启动与退出

1.3 MATLAB操作界面

1.3.1 主窗口

1.3.2 命令窗口

1.3.3 工作空间窗口

1.3.4 当前目录窗口和搜索路径

1.3.5 命令历史记录窗口

1.3.6 Stalt菜单

1.4 MATLAB帮助系统

1.4.1 帮助命令

1.4.2 帮助窗口

1.4.3 演示系统

第2章 MATLAB数据及其运算

2.1 MATLAB数据 特点

2.2 变量及其操作

2.2.1 变量与赋值

2.2.2 变量 管理

2.2.3 数据 输出格式

2.3 MATLAB矩阵 表示

2.3.1 矩阵 建立

2.3.2 冒号表达式

2.3.3 矩阵 拆分

2.4 MATLAB数据 运算

2.4.1 算术运算

2.4.2 关系运算

2.4.3 逻辑运算

2.5 字符串

2.6 结构数据和单元数据

2.6.1 结构数据

2.6.2 单元数据

第3章 MATLAB矩阵分析与处理

3.1 特殊矩阵

3.1.1 通用 特殊矩阵

3.1.2 用 专门学科 特殊矩阵

3.2 矩阵结构变换

3.2.1 对角阵与三角阵

3.2.2 矩阵 转置与旋转

3.3 矩阵求逆与线性方程组求解

3.3.1 矩阵 逆与伪逆

3.3.2 用矩阵求逆方法求解线性方程组

3.4 矩阵求值

3.4.1 方阵 行列式值

3.4.2 矩阵 秩与迹

3.4.3 向量和矩阵 范数

3.4.4 矩阵 条件数

3.5 矩阵 特征值与特征向量

3.6 矩阵 超越函数 第4章 MATLAB程序设计

4.1 M文件

4.1.1 M文件 分类

4.1.2 M文件 建立与打开

4.2 程序控制结构

顺序结构、选择结构、循环结构 4.3 函数文件 4.4 程序调试

第5章 MATLAB绘图

5.1 二维图形

I

5.2 三维图形

5.3 三维图形的精细处理

5.4 隐函数绘图

5.5 底层绘图操作

5.6 光照与材质

5.7 图像显示与动画

第6章 MATLAB数值计算

6.1 数据处理与多项式计算

6.2 数值微积分

6.3 离散傅里叶变换

6.4 线性方程组求解

6.5 非线性方程与最优化问题求解

6.6 常微分方程的数值求解

6.7 稀疏矩阵

第7章 MATLAB符号计算

7.1 符号计算基础

7.2 符号函数及其应用

7.3 符号积分

7.4 级数

7.5 符号方程求解 应用篇

第8章 MATLAB图形用户界面设计

8.1 菜单设计

8.2 对话框设计

8.3 可视化图形用户界面设计

第9章 MATLABNotebook 使用

9.1 NOTEBook的安装于启动

9.2 单元的定义与执行

9.3 输出格式控制

第10章 MATLABSimlllink仿真软件

10.1 Simlllink操作基础

10.2 系统仿真模型

10.3 系统的仿真

10.4 使用命令操作对系统进行仿真

10.5 子系统及其封装技术

10.6 S函数的设计与应用

第11章 MATLAB外部程序接口技术

11.1 MATLAB的数据接口

11.2 MATLAB编译器

11.3 MATLAB计算引擎

11.4 MEX动态链接函数接口

第12章 MATLAB 应用

12.1 MATLAB在电路分析中的应用

12.2 MATLAB在控制系统分析中的应用

12.3 MATLAB在数学建模中的应用

12.4 MATLAB在力学及工程结构分析中的应用

12.5 MATLAB在优化设计中的应用 实验篇

实验要求

实验

MATLAB运算基础

实验二 MATLAB矩阵分析与处理

实验三 选择结构程序设计

实验四 循环结构程序设计

实验五 函数文件

实验六 高层绘图操作

实验七 低层绘图操作

实验八 数据处理与多项式计算

实验九 数值微积分与方程数值求解

实验十 符号计算基础与符号微积分

实验十

级数与方程符号求解

实验十二 菜单与对话框设计

实验十三 Simulink 应用

实验十四 外部程序接口

实验十五 综合实验

II

第1章

MATLAB系统环境

本章重点:发展、功能、操作界面、帮助 课时安排:2课时 内容安排:

1、概述:MATLAB 发展、MATLAB 主要功能(1)发展

MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。那是20世纪七十年代后期的事:时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰,而改以MATLAB为平台加以重建。在时间进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。到九十年代初期,在国际上30几个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头,而Mathematica和Maple则分居符号计算软件的前两名。Mathcad因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。MathWorks公司于1993年推出MATLAB4.0版本,从此告别DOS版。4.x版在继承和发展其原有的数值计算和图形可视能力的同时,出现了以下几个重要变化:(1)推出了SIMULINK。这是一个交互式操作的动态系统建模、仿真、分析集成环境。它的出现使人们有可能考虑许多以前不得不做简化假设的非线性因素、随机因素,从而大大提高了人们对非线性、随机动态系统的认知能力。(2)开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的道路。(3)推出了符号计算工具包。1993年MathWorks公司从加拿大滑铁卢大学购得Maple的使用权,以Maple为“引擎”开发了Symbolic Math Toolbox 1.0。MathWorks公司此举加快结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。(4)构作了Notebook。MathWorks公司瞄准应用范围最广的Word,运用DDE和OLE,实现了MATLAB与Word的无缝连接,从而为专业科技工作者创造了融科学计算、图形可视、文字处理于一体的高水准环境。1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版。与 4.x相比,现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。(关于MATLAB5.x的特点下节将作更详细的介绍。)诚然,到1999年底,Mathematica也已经升到4.0版,它特别加强了以前欠缺的大规模数据处理能力。Mathcad 也赶在2000年到来之前推出了Mathcad 2000,它购买了Maple内核和库的部分使用权,打通了与MATLAB的接口,从而把其数学计算能力提高到专业层次。但是,就影响而言,至今仍然没有一个别的计算软件可与MATLAB匹敌。在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为内容。这几乎成了九十年代教科书与旧版书籍的区别性标志。在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用。

在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具。如美国National Instruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑。又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各种硬卡、仪器等都接受MATLAB的支持。(2)主要功能:计算、图形、程序、工具

2、MATLAB环境:准备、MATLAB 安装、MATLAB 启动与退出 虚拟光驱

3种启动方式:菜单方式、到安装路劲下双击MATLAB.exe运行方式、桌面快捷方式、3种退出方式:菜单、关闭窗口、命令quit或exit

3、MATLAB操作界面:主窗口、命令窗口、工作空间窗口、当前目录窗口和搜索路径、命令历史记录窗口、Start菜单

4、MATLAB帮助系统:帮助命令help、lookfor命令、帮助窗口、演示系统

5、MATLAB功能演示

例1-1 绘制正弦曲线和余弦曲线。x=[0:0.5:360]*pi/180;plot(x,sin(x),x,cos(x));例1-2 求方程 3x4+7x3 +9x2-23=0的全部根。

p=[3,7,9,0,-23];

%建立多项式系数向量 x=roots(p)

%求根 例1-3 求积分

例1-4 1[xln(1x)]dx0

quad('x.*log(1+x)',0,1)求解线性方程组。

2x13x2x348x13x22x32即:aXb 45xx9x17231a=[2,-3,1;8,3,2;45,1,-9];b=[4;2;17];x=inv(a)*b 第2章 MATLAB数据及其运算

本章重点:变量、格式、矩阵、运算、字符串 课时安排:4课时 内容安排:

1、MATLAB数据的特点

(1)矩阵是MATLAB最基本、最重要的数据对象。

例如: 1357

2345(2)向量可以看成是仅有一行或一列的矩阵。

例如:[1 2 3],[28 3 9](3)单个数据(标量)可以看成是矩阵的特例。单个数据看着也看着矩阵。例如:10=[10](4)数据类型

MATLAB定义了15种数据类型:

Char,float,double,int8,int16,int32,int64,uint8,uint16,uint32,uint64,cell,structure,java类,函数句柄,用户定义类型

一般情况下,矩阵的每个元素必须具有相同的数据类型,在实际应用中,有时需要将不同类型的数据构成矩阵的元素,也就是结构体(Structure)和元胞(Cell)数据类型。

'LIYANG'22'M''LIYANG'22'M''WANG'31'W','WANG'31'W'

'TANG'18'M''TANG18'M'

2、变量及其操作 2.1变量命名:

以字母开头(不是数字、汉字开头)后接字母、数字、下划线的最多63个字符,区分大小写。

2.2 变量赋值操作(1)变量=表达式 例如:a=123;b=‟ok‟

(2)表达式;%把表达式值赋值给预定义变量ans 例如:123456 7sin(30)例如:将写成MATLAB表达式

log(5)e0.3ln(5cos(3))将写成MATLAB表达式 312tg(20)(3)预定义变量:ans,eps,pi,i,j,inf,Inf,NaN,nan,nargin,nargout,realmax,realmin,lasterr,lastwarn

例如:2+6i,3+pi(4)变量管理:内存变量的显示与删除,who,whos,clear.(5)工作空间浏览器

(6)变量编辑器:(7)内存变量文件:

save 文件名

[变量名表] [-append][-ascii]

load 文件名

[变量名表] [-ascii] 2.3 数据输出格式:

采用十进制数表示一个常数,可用日常记数法和科学记数法,format format short format long format short e format long e format rat format hex format compact format loose

3、MATLAB矩阵表示

矩阵:n×m的数据存储空间

向量:单行或单列的矩阵 标量:1×1的矩阵

数组:矩阵是数组的特例,矩阵是二维数组,向量是一维数组。

空矩阵:[]表示无任何元素 3.1矩阵建立 1.直接输入法

矩阵元素应用方括号([])括住

每行内的元素间用逗号(,)或空格隔开 行与行之间用分号(;)或回车键隔开; 元素可以是数值或表达式。例如:a=[2,3;5,6;8,9] cB=[4,2+3i;5i,6i] xp=[2 3;4 5] 复数矩阵

2.利用M文件建立矩阵

(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.(2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。

(3)load 文件名,就会自动建立一个名为MYMAT的矩阵,可供以后使用。3.建立大矩阵

大矩阵可由方括号中的小矩阵建立起来。例如

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

C=[A,eye(size(A));ones(size(A)),A]

4.冒号表达式:

(1)使用冒号表达式生成向量 冒号表达式的一般格式:

e1:e2:e3 其中e1为初始值,e2为步长,e3为终止值。冒号表达式可产生一个由e1开始到e3 4 结束,以步长e2自增的行向量。

在冒号表达式中如果省略e2不写,则步长为1。当e2省略或e2>0,e1>e3;e2<0, e1

linspace(a,b,n)%生成线性等分向量

logspace(a,b,n)%生成对数等分向量 说明:

a、b、n三个参数分别表示开始值、结束值和元素个数; linspace函数生成从a到b之间线性分布的n个元素的行向量,n如果省略则默认值为100; linspace(a,b,n)与a:(b-a)/(n-1):b等价。

logspace函数生成从10a到10b之间按对数等分的n个元素的行向量,n如果省略则默认值为50。

3.2矩阵的拆分: 1.矩阵元素访问

MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。而不影响其它元素的值。例如

A=ones(4);A(3,2)=200 只改变该元素的值,而不影响其他元素的值。如果给出的行下标或列下标大于原来矩阵的行数和列数,则MATLAB将自动扩展原来的矩阵,并将扩展后未赋值得矩阵元素置为0 A(4,6)=10 也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。A(6)显然,下标(subscrip)与序号(index)是一一对应的。以m×n矩阵A为例,矩阵元素A(i,j)的序号为

(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得 sub2ind(size(A),2,3)[c,d]=ind2sub(size(A),6)2.利用冒号获得子矩阵

①A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。

②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。

A=[1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35];A(2:3,4:5)A(2:3,1:2:5)此外,还可利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。

A=[1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35];A(end,:)%取A最后一行元素

A([1,4],3:end)%取A第1、4行中第3列到最后一列元素

3.利用空矩阵删除矩阵元素

在MATLAB中,定义[]为空矩阵。给变量X赋空矩阵的语句为X=[]。

注意:X=[]与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。

将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。

A=[1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35];A(:,[2,4])=[]%删除A的第2列和第4列元素 4 矩阵合并

矩阵的合并就是把两个以上的矩阵连接起来得到一个新矩阵,“[]”符号可以作为矩阵合并操作符,命令格式如下: c=[a b]

%将矩阵a和b水平方向合并为c c=[a;b] %将矩阵a和b垂直方向合并为c

5、MATLAB数据运算: 算术运算:+,-,*,/,^ 点运算:.*,./,.,MATLAB常用函数:sin,asin,cos,acos,tan,atan,sqrt,log,abs,rem,exp,mod,round,gcd,fix 关系运算(返回真1或假0):<,<=,>,>=,==,!= 逻辑运算((返回真1或假0)):&,|,~ 位运算:bitand,bitor,bitxor,bitshift 关系与逻辑运算函数:all,any,exit,find,isempty,issparse,xor

6、字符串:

创建:s=‟please‟

字符串函数:setstr,mat2str,int2str,num2str,str2num,strcat,strcmp

7、结构数据和单元数据:

结构数据:建立、引用、修改、结构函数 单元(cell)数据:建立、引用、函数第3章 MATLAB矩阵分析与处理

本章重点:特殊矩阵、矩阵变换、矩阵求值 课时安排:4课时 内容安排:

1.特殊矩阵的建立

1.1通用特殊矩阵:zeros,ones,eye,rand,randn 几个产生特殊矩阵的函数:

zeros 产生全0矩阵(零矩阵)

ones 产生全1矩阵(么矩阵)eye

产生单位矩阵

rand 产生0~1间均匀分布的随机矩阵 randn 产生0~1间正态分布的随机矩阵

这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:

zeros(m)

产生m×m零矩阵

zeros(m,n)

产生m×n零矩阵。

zeros(size(A))

产生与矩阵A同样大小的零矩阵 相关的函数有:

size(A)

返回包含2个元素的向量,分别是A的行数、列数

length(A)给出行数和列数中的较大者,即

length(A)=max(size(A));

ndims(A)给出A的维数。

reshape(A,m,n)它在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。

例2.3 分别建立3×3、3×2和与矩阵A同样大小的零矩阵。(1)建立一个3×3零矩阵:zeros(3)(2)建立一个3×2零矩阵:zeros(3,2)(3)建立与矩阵A同样大小零矩阵:zeros(size(A))(4)将矩阵xv重新排成2×5、5×2矩阵 xv=[23,34,65,67,54,38,78,76,32,56];

ym=reshape(xv,2,5)

newym=reshape(xv,5,2)

1.2专门学科特殊矩阵:magic,vander,hilb,toeplitz,compan,pascal magic矩阵的每行、每列、及两条对角线的元素之和都相等。用法:magic(n)vander矩阵的最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘。用法:vander(n)Hilb矩阵的每个元素是hij1,用法:hilb(n)

ij1toeplitz矩阵除第一行和第一列外,其他每个元素都与其相邻左上角的元素相同。用法:toeplitz(x,y)或者(x),这里x和y都为向量,生成以x为第一列,y为第一行的toeplitz矩阵 伴随矩阵compan:设多项式p(x)anxan1xnn1a1xa0,则多项式的伴随矩阵 7 an1an1为:A000an2an0100an3an100000a0an0000 00010a1an

Pascal矩阵就是杨辉三角形矩阵,第1行和第1列都为1,其余元素为其相邻的右面和上面元素之和。

2、矩阵结构变换: 2.1 矩阵转置:B=A‟ 2.2 方阵行列式

det(x):计算方阵行列式 2.3 矩阵秩

rank(x):求矩阵的秩 2.4 矩阵的逆矩阵

inv(x)求矩阵的逆矩阵 2.5 矩阵的特征值与特征向量

[v,d]=eig(x):求矩阵的特征向量v和特征值d 2.6 产生对角阵

diag(x):产生矩阵x的对角阵 2.7 矩阵的正交阵表示

[q,r]=qr(x)2.8 产生上三角矩阵与下三角矩阵

triu(x)和tril(x):分别产生x的上、下三角矩阵,其

余元素补0 3.数组翻转

常用数组翻转函数 :flipud(x)、fliplr(x)、flipdim(x,dim)、rot90(x,k)

4、矩阵求逆与线性方程组求解:

(1)矩阵逆inv(A):用于矩阵A的秩为满秩的方阵A。

伪逆pinv(A):对于不为满秩的矩阵A,不存在逆矩阵,但可以一个与A的转置矩阵A‟同型的矩阵B,使得:

A.B.A=A和B.A.B=B 此时称矩阵B为矩阵A的伪逆,也称广义逆矩阵:B=pinv(A)(2)用矩阵求逆方法求解线性方程组:

5、迹:trace(A)矩阵对角线元素之和,也等于矩阵的特征值之和。

6、矩阵范数:norm

用以度量矩阵或向量在某种意义下的长度。设向量V(v1,v2,,vn),则范数:(1)1-范数:||V||1n|vi|

i

1norm(V,1)(2)2-范数:||V||2nv2i

i1norm(V,2)或norm(V)(3)∞-范数:||V||max1in{|vi|} norm(V,inf)

7、矩阵条件数:cond(A)

8、矩阵超越函数

Sqrtm,logm,expm,funm

第4章 MATLAB程序设计

本章重点:M文件、选择程序设计、循环程序设计、M函数设计 课时安排:4课时 内容安排: 4.1 M文件

1. M文件分类

M程序文件(命令文件):无输入参数、无返回参数 M函数文件:有输入参数,有返回值 2. M文件 建立与打开(1)在matlab编辑器中(2)在其他编辑器:记事本 3.M文件的运行 4.注解:% 4.2 程序控制结构 1.顺序结构

(1)数据输入:

A=input(„提示信息‟,选项)(2)输入输出:

disp(输出项)(3)程序暂停: pause(延迟秒数)(4)程序强行中止:Ctrl+C键

例题:输入系数,求并显示一元二次方程ax2bxc0的根 2.选择程序设计(1)if语言

if语句与end组成一个复合命令 条件满足则执行语句,格式: if 条件

语句组 end 例如:if(fix(x)==x)

disp(x);

end(2)双分支语句if else if 条件

语句组1 else

语句组2 end 例如:输入x计算函数y值:

ycos(x1)/(x10),x10xxlnx,x10

(3)多分支if语句 格式: if 条件1

语句组1 elseif 条件2

语句组2

elseif 条件m

语句组m else

语句组n end 例如:从键盘输入,判断输入的是否为大写字母、小写字母、数字还是其他字符。(4)switch语句

根据不同的取值,分别执行不同的语句。格式: switch 表达式

case 表达式1 语句组1 case 表达式2 语句组2 …

case 表达式m 语句组m otherwise

case 表达式n 语句组n end 当表达式的值等于表达式1时,则执行语句组1;当表达式的值等于表达式2时,则执行语句组2;…,当表达式的值等于表达式m时,则执行语句组m;当表达式的值不等于case所列的所有表达式时,则执行语句组n。

例如:输入百分数,根据成绩判断优、良、中、及格、不及格等次

(6)try语句

用于判断执行语句是否存在逻辑错误(非语法错误,如除法的除数为零),格式: try

语句组1 catch

语句组2 end 先试探执行语句1,若存在错误,则执行语句2;若不存在错误则只执行语句1而不执行语句2.错误信息赋给保留的lasterr变量 循环程序设计(1)for语句 格式1:

for 循环变量=表达式1:步长:表达式3 循环体语句 end 2例题:根据611221321n2,求的值,n分别取100,1000,10000.格式2:

for 循环变量=矩阵

循环体语句 end 将矩阵的每列赋给循环变量。(3)while语句 格式: while 条件

循环体 end 例题:

(4)break和continue语句 例题

(5)循环嵌套 例题

4.3 M函数 1.M函数格式

function 输出参数=函数名(输入参数1,输入参数2,…)注释部分 函数体语句 例题

2.return语句 3.函数调用 一般函数调用 递归函数调用

4、函数参数的可调性

5、全局变量 global 变量名 4.4 程序调试

第5章 MATLAB绘图

本章重点:掌握绘制二维和三维图形的常用函数,掌握绘制图形的辅助操作 课时安排:4课时 内容安排: 5.1 二维绘图

1.绘制单根二维曲线

plot函数的基本调用格式为:plot(x,y)

其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。2.绘制多根二维曲线

plot函数的输入参数是矩阵形式

含多个输入参数的plot函数,调用格式为:plot(x1,y1,x2,y2,…,xn,yn)具有两个纵坐标标度的图形,调用格式为: plotyy(x1,y1,x2,y2)图形保持:hold on/off 3.设置曲线样式

要设置曲线样式可以在plot函数中加绘图选项,其调用格式为:

plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)4.图形标注与坐标控制。

有关图形标注函数的调用格式为: title(图形名称)xlabel(x轴说明)ylabel(y轴说明)text(x,y,图形说明)legend(图例1,图例2,…)

axis函数坐标标注函数调用格式为: axis([xmin xmax ymin ymax zmin zmax])axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。

axis square:产生正方形坐标系(缺省为矩形)。axis auto:使用缺省设置。axis off:取消坐标轴。axis on:显示坐标轴。5.其它二维图形

polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项)二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,…)5.2 三维绘图 1.三维曲线

调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)2.三维曲面

surf函数和mesh函数的调用格式为: mesh(x,y,z,c)surf(x,y,z,c)3.其它三维图形

[x,y,z]=sphere(n)

%球体

[x,y,z]= cylinder(R,n)%圆柱体 bar3函数绘制三维条形图

stem3函数绘制离散序列数据的三维杆图 pie3函数绘制三维饼图 5.3 三维绘图的精细处理 1.视点处理

函数view,其调用格式为: view(az,el)2.色彩处理

向量元素在[0,1]范围取值,3个元素分别表示红、绿、蓝3种颜色的相对亮度,称为RGB三元组。色图是m×3 的数值矩阵,它的每一行是RGB三元组。三维表面图形的着色,surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。3.图形裁剪处理

例5-25 绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分。程序如下:

[x,y]=meshgrid(-5:0.1:5);z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);surf(x,y,z);shading interp;pause

%程序暂停 i=find(x<=0&y<=0);z1=z;z1(i)=NaN;surf(x,y,z1);shading interp;为了展示裁剪效果,第一个曲面绘制完成后暂停,然后显示裁剪后的曲面。5.4 隐函数绘图

ezplot函数绘制隐函数图形 5.5 低层绘图 5.6 图像和动画

第6章 MATLAB数值计算 本章重点:

课时安排:4课时 内容安排:

第7章 MATLAB符号计算 本章重点:

课时安排:2课时 内容安排:

第8章MATLAB图形用户界面本章重点:

课时安排:2课时 内容安排:

第10章Simulink

本章重点:

课时安排:6课时 内容安排:

下载Matlab应用课程设计[本站推荐]word格式文档
下载Matlab应用课程设计[本站推荐].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    高频电子线路Matlab仿真实验-课程设计要求

    高频电子线路Matlab仿真实验/课程设计要求 1. 要求 每位同学根据教材附录的matlab源码独立完成以下仿真要求,并将仿真代码和仿真结果写成实验报告,由各班统一收齐并于5月31日......

    牛头刨床matlab程序 机械原理课程设计

    clear all;clc; %初始条件 theta1=linspace(-18,342,100);%单位度 theta1=theta1*pi/180;%转换为弧度制 W1=80*pi/30;%角速度 单位rad/s H=0.5;%行程 单位m L1=0.1329;%O2A......

    Matlab在控制工程中的应用

    Matlab在控制工程中的应用 摘要: 简要介绍MATLAB软件及其控制系统工具箱的功能,并通过具体实例说明MATLAB软件在《机械控制工程基础》课程教学中的优越性,从多方面探讨在教学过......

    通信原理课程设计_(基于MATLAB的_2PSK_2DPSK仿真)

    江西农业大学 通信原理课程设计报告 题 目 基于Matlab的相移键控仿真设计 专 业 电子信息工程 学生姓名 曾凡文 学 号 20121206 江西农业大学课程设计报告 2015年6月 基于M......

    通信原理课程设计_(基于MATLAB的_2PSK_2DPSK仿真)

    江西农业大学 通信原理课程设计报告 题 目 基于Matlab的相移键控仿真设计 专 业 电子信息工程 学生姓名 曾凡文 学 号 20121206 江西农业大学课程设计报告 二 0 一五 年 六......

    软件工程(应用专业)课程设计_...

    《软件工程》课程设计任务书 一.目的 软件工程课程设计是软件工程专业一个综合性的实践教学环节,其目的在于促进学生复习和巩固计算机软件设计知识,加深对软件设计方法、软件设......

    Android应用课程设计题目

    Android应用与开发课程设计题目 注意事项: 1、小组可选下列题目中的一题完成课程设计,或者自拟题目。 2、课程设计于第16周和17周小课进行演示讲解, 并要求17周结束前以小组为......

    数据库应用课程设计要求

    数据库应用课程设计要求 一、计算机信息管理专业集中实践环节包含的内容及完成时间: 1、数据库应用课程设计——应在第二学期完成; 2、企业资源规划(ERP)综合实训——应在第四学......