基于MATLAB的M文件仿真
- 格式:doc
- 大小:59.00 KB
- 文档页数:5
实验三M 文件及MATLAB 程序设计与调试一、实验目的全面掌握在MA TLAB 下进行程序设计的有关问题,具体涉及到M 脚本文件和M 函数文件的编写、全局和局部变量的使用、流程控制结构、提高程序执行效率的设计技术、程序调试等问题。
二、实验内容1、关于M 脚本文件和M 函数文件MATLAB 的M 文件有两类:脚本文件和函数文件。
(1)脚本文件——将原本要在MATLAB 的指令窗口中直接输入的语句,放在一个以.m 为后缀的,称为脚本文件中。
有了脚本文件,可直接在MATLAB 中输入脚本文件名(不含后缀)。
MATLAB 会打开这一脚本文件,并依次执行脚本文件中的每一条语句,这与在MATLAB 中直接输入语句的结果完全一致。
(2)函数文件——它的第一行必须是函数定义行。
M 函数文件由5 部分构成:◆函数定义行◆H1 行◆函数帮助文本◆函数体◆注释注意:在函数文件中,除了函数定义行之外,其它部分都是可以省略的。
但作为一个函数,为了提高函数的可用性,应加上H1 行和函数帮助文本,为了提高函数的可读性,应加上适当的注释。
例如:function y = mean(x)% MEAN Average or mean value.% For vectors, MEAN(X) is the mean value of the elements in X.% For matrices, MEAN(X) is a row vector containing the mean value of each column.[m,n]=size(x);if m==1% Determine whether x is a vectorm=n;endy = sum(x)/m;①函数定义行:function y = mean(x)function 为函数定义的关键字,mean 为函数名,y 为输出变量,x 为输入变量当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。
电子信息科学与技术专业课程设计题单班级0982081学生课程名称专业课程设计课题基于Matlab的m序列相关特性的仿真设计要求基于Matlab语言编程,对m序列相关特性进行仿真,并用Matlab GUI工具设计图形界面显示结果,具体要求如下:1、给定m序列S1、S2,码长为10232、计算m序列S1的自相关函数3、计算m序列对S1、S2的互相关函数4、界面设计要有按钮控件以及一、二级菜单课题发给日期2012.07.04课程设计完成日期2012.07.29指导教师评语:评分:摘要m 序列是最长线性反馈移存器序列的简称,它是由带线性反馈的移存器产生的周期最长的一种序列。
本文主要是介绍MATLAB 在m 序列的产生及其相关特性分析方面的应用,研究了关于matlab完成m序列simulink 硬件仿真方法,并且利用MATLAB 对不同长度的几种m 序列进行相关特性的分析。
对m序列的原理、结构、性质进行了分析,在matlab中采用编程和simulink动态仿真功能2种方式实现m序列,仿真实验表明,这两种方法简单,易于实现,可移植性较强,具有可行性和设计的合理性。
[关键词]m 序列;simulink 硬件仿真;自相关目录第一章设计内容及要求第二章m序列设计方案的选择第三章m序列的产生及性质3.1 m序列的产生原理、结构及产生3.2 m序列的基本性质3.3 生成m序列的模块第四章 m序列构造其他序列第五章程序调试及运结果5.1仿真设计流程图5.2实验的调试与运行结果5.3 错误排除第六章结论参考文献附录第一章设计内容及要求基于MATLAB产生m序列要求:1.通过matlab编程产生m序列的产生原理及其产生方法。
2.对特定长度的m序列,分析其性质,及其用来构造其它序列的方法。
第二章m序列设计方案的选择2.1 方案一MATLAB编程非常简单,无需进行变量声明,可以很方便的实现m 序列。
2.2 方案二图2.1 Simulink实现m序列Simulink是MATLAB最重要的组件之一,它提供了一个动态系统建模,仿真和综合分析的集成环境。
目录一、背景 (4)二、基本要求 (4)三、设计概述 (4)四、Matlab设计流程图 (5)五、Matlab程序及仿真结果图 (6)1、生成m序列及m序列性质 (6)2、生成50位随机待发送二进制比特序列,并进行扩频编码 (7)3、对扩频前后信号进行BPSK调制,观察其时域波形 (9)4、计算并观察扩频前后BPSK调制信号的频谱 (10)5、仿真经awgn信道传输后,扩频前后信号时域及频域的变化 (11)6、对比经信道前后两种信号的频谱变化 (12)7、接收机与本地恢复载波相乘,观察仿真时域波形 (14)8、与恢复载波相乘后,观察其频谱变化 (15)9、仿真观察信号经凯萨尔窗低通滤波后的频谱 (16)10、观察经过低通滤波器后无扩频与扩频系统的时域波形 (17)11、对扩频系统进行解扩,观察其时域频域 (18)12、比较扩频系统解扩前后信号带宽 (19)13、比较解扩前后信号功率谱密度 (20)14、对解扩信号进行采样、判决 (21)15、在信道中加入2040~2050Hz窄带强干扰并乘以恢复载波 (24)16、对加窄带干扰的信号进行低通滤波并解扩 (25)17、比较解扩后信号与窄带强干扰的功率谱 (27)六、误码率simulink仿真 (28)1、直接扩频系统信道模型 (28)2、加窄带干扰的直扩系统建模 (29)3、用示波器观察发送码字及解扩后码字 (30)4、直接扩频系统与无扩频系统的误码率比较 (31)5、不同扩频序列长度下的误码率比较 (32)6、扩频序列长度N=7时,不同强度窄带干扰下的误码率比较 (33)七、利用Walsh码实现码分多址技术 (34)1、产生改善的walsh码 (35)2、产生两路不同的信息序列 (36)3、用两个沃尔什码分别调制两路信号 (38)4、两路信号相加,并进行BPSK调制 (39)5、观察调制信号频谱,并经awgn信道加高斯白噪和窄带强干扰 (40)6、接收机信号乘以恢复载波,观察时域和频域 (42)7、信号经凯萨尔窗低通滤波器 (43)8、对滤波后信号分别用m1和m2进行解扩 (44)9、对两路信号分别采样,判决 (45)八、产生随机序列Gold码和正交Gold码 (47)1、产生Gold码并仿真其自相关函数 (48)2、产生正交Gold码并仿真其互相关函数 (50)九、实验心得体会 (51)直接序列扩频系统仿真一、背景直接序列扩频通信系统(DSSS)是目前应用最为广泛的系统。
《移动通信》课程项目报告题目:基于MATLAB的m序列仿真专业班级电子信息0121208班组长周易德组员叶子源组员胡楗指导教师李兆玉提交日期 2015年6月15日成绩课程设计任务分配表目录一、设计目的 0二、设计要求和设计指标 0三、设计内容 03.1 伪随机码 03.2 m序列的定义 (1)3.3 m序列的生产 (2)3.4 m序列的性质 (3)3.4.1平衡性 (3)3.4.2游程特性 (3)3.4.3自相关特性 (4)3.4.4功率谱与噪声类似 (5)3.4.5 互相关特性 (6)3.5 m序列的应用 (7)3.5.1 CDMA IS-95的前向信道 (9)3.5.1 CDMA IS-95的反向信道 (9)四、本设计改进建议 (9)五、总结 (9)六、主要参考文献 (10)附录1程序清单 (11)附录2 m序列本原多项式表 (16)一、设计目的我们想通过本次课程设计提高自己对移动通信的认识,熟练Matlab软件的使用,锻炼发现问题解决问题的能力,最终提示我们的自学能力。
具体来讲,本次课程设计将通过Matlab对m序列的生产方法和性质进行深刻的讨论,需要我们去了解m序列的生产和性质。
二、设计要求和设计指标设计要求:1.了解m序列的定义和其背后的意义2.通过Matlab生产m序列3.验证m序列主要性质4.讨论m序列的主要性质在扩频中的作用设计指标:1.能通过Matlab生产任意长度的m序列2.讨论任意长度m序列的均衡性、游程性、自相关特性、互相关特性等主要性质三、设计内容3.1 伪随机码伪随机(或伪噪声,Pseudorandom Noise,PN)码序列是一种常用的地址码,它具有与白噪声类似的自相关性质的0和1所构成的编码序列。
伪随机码序列具有类似于随机序列的基本特性,是一种貌似随机但实际上是有规律的周期性二进制序列。
如果发送数据序列经过完全随机性的加扰,接收机就无法恢复原始序列。
在实际系统中使用的是一个足够随机的序列,一方面这个随机序列对非目标接收机是不可识别的,另一方面目标接收机能够识别并且很容易同步地产生这个随机序列。
M文件:
k=1;
Int_F=inline('t','t');
for x=[1,3,5]
f_x(k)=x^3+x+log(x)*sin(x)+quad8(Int_F,0,x);
k=k+1;
end
f_x
>> Calcfx
Warning: QUAD8 is obsolete. We use QUADL instead. > In quad8 at 35
In Calcfx at 4
f_x =
2.5000 34.6550 140.9567
M文件:
function[mean,stdev]=stat(x)
n=length(x);
mean=sum(x)/n;
stdev=sqrt(sum(x-mean).^2/n);
>> x=[1,3,2];
>> [k,l]=stat(x)
k =
2
l =
微积分方程组的MA TLAB函数:
文件funcforex123.m
function xdot=funcforex123(t,x,flag,r,l,c)
xdot=zeros(2,1);
xdot(1)=-r/l*x(1)-1/l*x(2)+1/l*f(t);
xdot(2)=1/c*x(1);
function in=f(t)
in=(t>0)*1;
文件Ex123.m
l=1;
c=0.1;
for r=[1.5 3 5]
[t,x]=ode45('funcforex123',[-1,10],[0;0],[],r,l,c);
figure(1);plot(t,x(:,1));hold on;xlabel('time sec');
text(0.9,0.17,'\lefttarrow i_L(t)');grid;
figure(2);plot(t,x(:,2));hold on;xlabel('time sec');
text(0.5,0.3,'\leftarrow u_C(t)');grid;
End
>> ex123
Warning: Unable to interpret TeX string "\lefttarrow i_L(t)". > In ex123 at 5
Warning: Unable to interpret TeX string "\lefttarrow i_L(t)". > In ex123 at 7
Warning: Unable to interpret TeX string "\lefttarrow i_L(t)". > In ex123 at 7
文件ex123b.m
[t,x]=ode45('funcforex123',[-1,10],[0;0],[],2,1,0.1);
ts=0.001;
t1=-1:ts:10;
x1=interp1(t,x(:,2),t1,'spline');
plot(t1,x1,'k-.');
hold on;
x1dot=[diff([x1])/ts,0];
plot(t1,[diff([x1])/ts,0],'k');xlabel('time sec');
ht=10/sqrt(7.75).*exp(-1.5*t1).*sin(sqrt(7.75)*t1).*(t1>0);
plot(t1(1:50:length(t1)),ht(1:50:length(t1)),'ko');
legend('Syep response','Impulse response','Theoretic impluse response'); >> ex123b
欧拉算法的MA TLAB程序:
文件sybeuler.m
function [tout,yout]=sybeuler(odefile,t0,h,th,y0,P) tout=[t0:h:th]';
yout(length(tout),length(y0))=0;
kk=1;
for t=tout'
yout(kk,:)=y0';
kk=kk+1;
k1=h*eval([odefile'(t,y0,P)']);
y0=y0+k1;
end
文件mystateEQ.m
function xdot=mystateEQ(t,x,P)
xdot=zeros(2,1);
r=P(1);l=P(2);c=P(3);
xdot(1)=-r/l*x(1)-1/l*x(2)+1/l*f(t);
xdot(2)=1/c*x(1);
function in=f(t)
in=(t>0)*1;
文件mystateEQforODE45.m
function xdot=mystateEQforODE45(t,x,flag,P) xdot=zeros(2,1);
r=P(1);l=P(2);c=P(3);
xdot(1)=-r/l*x(1)-1/l*x(2)+1/l*f(t);
xdot(2)=1/c*x(1);
function in=f(t)
in=(t>0)*1;
文件sybeulerTEST.m
tic;
[t,x]=ode45('mystateEQforODE45',[0,10],[0;0],[],[3 1 0.1]); toc
plot(t,x,'k.');hold on;
for h=[0.2,0.1,0.01]
tic;
[t,x]=sybeuler('mystateEQ',0,h,10,[0;0],[3 1 0.1]);
toc
plot(t,x,'k');
end
legend('u_C(t)ode45','i_L(t)ode45','sybeuler');。