⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ofd.m

📁 matlab实现OFDM的仿真
💻 M
字号:
fc=2*10^6;   %中频调制频率
f1 = 1.8*10^6;  % 不同载波信号频率
f2 = 1.9*10^6;
f3 = 2.0*10^6;
f4 = 2.1*10^6;
f5 = 2.2*10^6;
fs=16*10^6;  %采样频率
Xn=zeros(1,320);  % 存放IDFT的处理后的数据
U1=zeros(1,320);
U2=zeros(1,320);
U3=zeros(1,320);
U4=zeros(1,320);
U5=zeros(1,320);
V1=zeros(1,320);
V2=zeros(1,320);
V3=zeros(1,320);
V4=zeros(1,320);
V5=zeros(1,320);
p=zeros(1,10);
q=zeros(1,10);
Im1=zeros(1,10); %用于存放译码后的数据
Im2=zeros(1,10);
for n=1:160
    Xn(1,n)=cos(2*pi*f1*n/fs) + sin(2*pi*f1*n/fs)- cos(2*pi*f2*n/fs) - sin(2*pi*f2*n/fs)+ cos(2*pi*f3*n/fs) + sin(2*pi*f3*n/fs)+ cos(2*pi*f4*n/fs) - sin(2*pi*f4*n/fs)- cos(2*pi*f5*n/fs) + sin(2*pi*f5*n/fs);
 end
for n=161:320
    Xn(1,n)=cos(2*pi*f1*n/fs) -sin(2*pi*f1*n/fs)+ cos(2*pi*f2*n/fs) - sin(2*pi*f2*n/fs)-cos(2*pi*f3*n/fs) -sin(2*pi*f3*n/fs)+ cos(2*pi*f4*n/fs) - sin(2*pi*f4*n/fs)+ cos(2*pi*f5*n/fs) + sin(2*pi*f5*n/fs);
end 
plot(Xn),title('调制后信号波形图'),grid
An=unifrnd(0,1,1,640);    %产生噪声
for n=1:320
    Nn(1,n)=2*(-2*log(An(1,n)))^(1/2)*cos(2*pi*An(1,(n+320)));
end
Yn=Xn+Nn; %得到含噪的调制信号采样数据y(n)
figure
plot([1:320],Yn),title('调制后信号加噪声后波形图'),grid

for n=1:160          % 对数据进行分组计算,类似IDFT的处理
    U1(1,n) = Yn(1,n)*cos(2*pi*f1*n/fs);
end
for n=1:160
    U2(1,n) = Yn(1,n)*cos(2*pi*f2*n/fs);
end
for n=1:160
    U3(1,n) = Yn(1,n)*cos(2*pi*f3*n/fs);
end
for n=1:160
    U4(1,n) = Yn(1,n)*cos(2*pi*f4*n/fs);
end
for n=1:160
    U5(1,n) = Yn(1,n)*cos(2*pi*f5*n/fs);
end
for n=161:320
    U1(1,n) = Yn(1,n)*cos(2*pi*f1*n/fs);
end
for n=161;320
    U2(1,n) = Yn(1,n)*cos(2*pi*f2*n/fs);
end
for n=161:320
    U3(1,n) = Yn(1,n)*cos(2*pi*f3*n/fs);
end
for n=161:320
    U4(1,n) = Yn(1,n)*cos(2*pi*f4*n/fs);
end
for n=161:320
    U5(1,n) = Yn(1,n)*cos(2*pi*f5*n/fs);
end

for n=1:160          % 对数据进行分组计算,类似IDFT的处理
    V1(1,n) = Yn(1,n)*sin(2*pi*f1*n/fs);
end
for n=1:160
    V2(1,n) = Yn(1,n)*sin(2*pi*f2*n/fs);
end
for n=1:160
    V3(1,n) = Yn(1,n)*sin(2*pi*f3*n/fs);
end
for n=1:160
    V4(1,n) = Yn(1,n)*sin(2*pi*f4*n/fs);
end
for n=1:160
    V5(1,n) = Yn(1,n)*sin(2*pi*f5*n/fs);
end
for n=161:320
    V1(1,n) = Yn(1,n)*sin(2*pi*f1*n/fs);
end
for n=161;320
    V2(1,n) = Yn(1,n)*sin(2*pi*f2*n/fs);
end
for n=161:320
    V3(1,n) = Yn(1,n)*sin(2*pi*f3*n/fs);
end
for n=161:320
    V4(1,n) = Yn(1,n)*sin(2*pi*f4*n/fs);
end
for n=161:320
    V5(1,n) = Yn(1,n)*sin(2*pi*f5*n/fs);
end
p(1,1)=(sum(U1(1:160)))/160;    % 译码部分
q(1,1)=(sum(U1(161:320)))/160;
p(1,2)=(sum(V1(1:160)))/160;
q(1,2)=(sum(V1(161:320)))/160;
p(1,3)=(sum(U2(1:160)))/160;
q(1,3)=(sum(U2(161:320)))/160;
p(1,4)=(sum(V2(1:160)))/160;
q(1,4)=(sum(V2(161:320)))/160;
p(1,5)=(sum(U3(1:160)))/160;
q(1,5)=(sum(U3(161:320)))/160;
p(1,6)=(sum(V3(1:160)))/160;
q(1,6)=(sum(V3(161:320)))/160;
p(1,7)=(sum(U4(1:160)))/160;
q(1,7)=(sum(U4(161:320)))/160;
p(1,8)=(sum(V4(1:160)))/160;
q(1,8)=(sum(V4(161:320)))/160;
p(1,9)=(sum(U5(1:160)))/160;
q(1,9)=(sum(U5(161:320)))/160;
p(1,10)=(sum(V5(1:160)))/160;
q(1,10)=(sum(V5(161:320)))/160;
for n=1:10
    if p(1,n)> 0 
        Im1(1,n)=1;
    else  Im(1,n)=0;
    end
end
for n=1:10
    if q(1,n)> 0 
       Im2(1,n)=1;
    else  Im2(1,n)=0;
    end
end
information1=Im1  %输出译码后波形 与原数据进行对比
information2=Im2

    
   















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -