下面是直扩系统仿真程序,第一段是扩频和调制,第二段是m序列生成,求 第一段程序接着编扰配高写解扩和解调的程序~
(1)clc
clear
%.............................生成待传输信息,码元宽度为切普宽度的10倍...................
message=randint(1,4)%随机生卖唤成4个0 1码
code=[]
for i=1:length(message)
if message(1,i)==0
code1=zeros(1,10)
else
code1=ones(1,10)
end
code=[code,code1]
end
%...............................生成m序列......................................
a=[ 0 1 0 0 1 1 1 ] %m序列特缓尺征多项式
b=[0 0 0 0 0 0 1]%移位寄存器初始状态
c=length(code) %生成m序列长度
m_sequence=mseq(a,b,c)
dsss=code.*m_sequence%扩频
%.............................BPSK调制.......................................
f=20%载波频率,为码元速率二倍
t=0:1/(f-1):1
cp=[]
mod=[]
for j=1:length(dsss)
if dsss(j)==0
cp1=-ones(1,20)
else
cp1=ones(1,20)
end
c=cos(2*pi*f*t)
cp=[cp,cp1]
mod=[mod,c]
end
bpsk=cp.*mod
plot(bpsk,'linewidth',1.5)grid on
ylabel('bpsk modulation')
axis([0 20*length(dsss) -2 2])
(2)
function[seq]=mseq(connections,registers,len)
m=length(connections)
L=2^m-1%周期长度
if len==0
len=L
end
fan=0
for i=1:len
seq(i)=registers(m)
for j=1:m
fan=fan+connections(j)*registers(j)
fan=(mod(fan,2))
end
for t=m:-1:2%寄存器移位
registers(t)=registers(t-1)
end
registers(1)=fan
fan=0
end
1、如果仿真一个传递函羡高数的阶跃、脉冲等响应,可以直接使用matlab函数。
2、如果是一兄扰尺个复杂的系统,需要使用matlab中的Simulink工具箱。
3、仿真方法,仿真(s+1)/(2s^2+2s+1)的阶跃响应
num=[1
1]
den=[2
2
1]
f=tf(num,den)
Transfer
function:
s
+
1
2
s^2
+
2
s
+
1
>>
step(f)
这样就可以得到它的李核响应曲线。
clearfs=1000%采样频率1000hz
N=500%采样点数
t=(0:1:N-1)/fs
f=10%正弦信号频率10hz
x=sin(2*pi*f*t)+randn(size(t))%被随机信号干扰的正弦信号
b = fir1(31,0.5) %由b = fir1(31,0.5)产生32阶滤波器系数
n = 0.1*randn(1,500)% 通过以上滤波系统所加入的噪声
d = filter(b,1,x)+n % 通过滤波器后的期望信号
delta = 0.005 % 设置自适应滤波器其中一个步长因子为0.005
ha = adaptfilt.lms(32,delta)%求出系统的滤波器系数
[y,e] = filter(ha,x,d)
delta0=0.001 %另一个步长因子为0.001作对比
ha=adaptfilt.lms(32,delta0)
[y0,e0]=filter(ha,x,d)
m=1:500
figure(1)
plot(m,x,'g')
figure(2)
plot(m,e,'r',m,e0)
legend('delta=0.001','delta=0.005')
% subplot(2,1,1)
% plot(m,e0)
%
以上是基本的LMS算法
% 滤波型LMS算法滤波
M = 20 % 运行次数
N = 1000 % 信号的长度祥和
n = 0:N-1
s = sin(2*pi*n/10)% 初始信号
u = s + 0.36*randn(1,N) % 叠加噪声后的信号
% 信号叠加噪声波形图
figure(1)
plot(n,u)
title('信号叠加噪声波形图')
xlabel('n')ylabel('u')
y = zeros(1,N)% 初始化经过自适应滤波器后的信号为零向量
w = zeros(1,N)% 初始化自适应滤波器的权向量为零向量
e = zeros(N) % 初始化误差e(n)的为零向量
a = zeros(1,N)% 初始化前向滤波器的权向量为零向量
vare = zeros(N) % 初始化误差的平方e(n)^2的为零向量
estd = zeros(N) % 初始化均方误差E{e(n)^2}的为零向量
vare1 = ones(1,N) % 初始化误差的平方e(n)^2的为1向量
estd1 = ones(1,N) % 初始化均方误差E{e(n)^2}的为1向量
k = 10% 自适应滤波器的阶数
e1 = zeros(1,N) % 初始化前向预测误差e1为零向量
e2 = zeros(1,N) % 初始化滤波向量e为零向量
y(1:k) = u(1:k)
mu0 = 0.0065 % 初始更新步长因子败宴岁
% 初始化前向滤波器的权向量
a(1:11) = [ 0.1642 , 0.1341 , 0.0529,-0.0624 , -0.1586 ,-0.1932 , -0.1555 , -0.0599 , 0.0584, 0.1229 , 0.1106]
% 滤波型LMS算法滤察睁波
for j = (k + 1):M
u = s + 0.36*randn(1,N) % 叠加噪声后的信号
for n=(k+2):N
mu = mu0/(1 + (n/100)) % 先搜索后收敛步长因子
e(j,n) = s(n) - w((n-1):(n+9)) * u(n:-1:(n-10))' % 误差
e1(n) = u(n) + a((n-10):n)*u((n-1):-1:(n-11))'% 前向预测误差
e2(n) = e(j,n) + a((n-10):n)*e(j,(n:-1:(n-10)))' % 滤波
w(n:(n+10)) = w((n-1):(n+9)) + mu*e1(n:-1:(n-10))*e2(n) % 更新自适应滤波器的权向量
y(n) = w((n):(n+10)) * u((n):-1:(n-10))' % 经过自适应滤波器后的信号
vare(j,n) =e(j,n)^2 % 误差的平方e(n)^2
estd(j,n) = vare(j,(1:n))*vare(j,(1:n))'/n% 均方误差E{e(n)^2}
end
end
vare1 = (vare1*vare)/M% 统计平均意义下e(n)^2
estd1 = (estd1*estd)/M% 统计平均意义下学习曲线
% 滤波型LMS自适应滤波输出
figure(2)
plot(y)
title('mu = 0.0065时滤波型LMS自适应滤波输出')
xlabel('n')ylabel('y')
% 滤波型LMS自适应滤波器的e(n)^2的曲线
figure(3)
plot(vare1)
title('滤波型LMS自适应滤波器的e(n)^2的曲线 ')
xlabel('n')ylabel('e(n)^2')
% 滤波型LMS自适应滤波器的学习曲线图
figure(4)
plot(estd1)
title('滤波型LMS自适应滤波器的学习曲线图 ')
xlabel('n')ylabel('E[e(n)^2]')
希望可以帮到你
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)