📄 sc_ofdm_wavelet.m
字号:
% 本仿真用于计算和绘制 QAM 信号的符号率
% 数据源为 test_source.mdl
clear;
clc;
x_time =0.1;
%load ofdm.mat;
%ofdm=reshape(ofdm,1,91429);
%-----------------QAM---------------
for snr=1:26
for m=1:10%每个信噪比做1100次蒙特卡罗试验
r=randint(1,1,1000);
sim('test_source')%启动仿真数据源
len = 8192;%数据长度
s=snr-1;%设置信噪比
data=QAM(1:len);data=hilbert(data);%希尔波特变换
data1 = awgn(data,s,'measured');%加高斯白噪声
data2 = data1/sqrt(sum(real(data1).*real(data1)+imag(data1).*imag(data1))/length(data1));%功率归一化
scal = 4;%小波变换的尺度因子
coef = cwt(data2,scal,'haar');%第一次小波变换
coef = (coef);
%coef(1) = coef(2);
%subplot(3,1,1);
%plot(abs(coef(10:8000)));
ccc = cwt(abs(coef),scal,'haar');;%第二次小波变换
%ccc(1) = ccc(2);
a=abs(ccc(10:8000));b=medfilt1(a,20);%中值滤波
%subplot(3,1,2);
%plot(b);
%testfft = fft(abs(ccc),len);
%dd = abs(testfft(10:1000));
%dd(1) = dd(2);
v_qam=var(b(1:2000));%求包络方差
%m_qam=mean(a(1:2000));
%plot(dd(2:800));
%end
%n=1:100;
%figure(2)
%plot(v_qam);
qam(m,snr)=v_qam;%/(m_qam).^2;
%subplot(3,1,3);
%end
%end
%plot(qam,'-*');
%xlabel('SNR(dB)');
%ylabel('VAR');
%hold on
%end
%rr(1:30)=sum(p(:,1:30))/2;
%figure(2)
%plot(rr);
%grid on
%----------------PSK--------------
%for snr=1:31
%for m=1:100
r=randint(1,1,1000);%相应的注释与QAM信号相同
sim('test_source')
len = 8192;
data=PSK(1:len);data=hilbert(data);
s=snr-1;
data1 = awgn(data,s,'measured');
data2 = data1/sqrt(sum(real(data1).*real(data1)+imag(data1).*imag(data1))/length(data1));
scal = 4;
coef = cwt(data2,scal,'haar');
coef = (coef);
ccc = cwt(abs(coef),scal,'haar');
a=abs(ccc(10:8000));b=medfilt1(a,20);
v_qam=var(b(1:2000));
bpsk(m,snr)=v_qam;
%end
%end
%plot(bpsk,'-o');
%xlabel('SNR(dB)');
%ylabel('VAR');
%hold on
%----------------FSK--------------
%for snr=1:31
%snr=1;
%for m=1:100
r=randint(1,1,1000);%相应的注释与QAM信号相同
sim('test_source')
len = 8192;
data=FSK(1:len);data=hilbert(data);
s=snr-1;
data1 = awgn(data,s,'measured');
data2 = data1/sqrt(sum(real(data1).*real(data1)+imag(data1).*imag(data1))/length(data1));
scal = 4;
coef = cwt(data2,scal,'haar');
coef = (coef);
ccc = cwt(abs(coef),scal,'haar');
a=abs(ccc(10:8000));b=medfilt1(a,20);
v_qam=var(b(1:2000));
bfsk(m,snr)=v_qam;
%---------------ofdm-------------
sim('my_OFDM');
ofdm=(reshape(ofdm,1,914286));%取914286个点的数据
len = 8192;
data1=hilbert(ofdm(40000:50000));%相应的注释与QAM信号相同
s=snr-1;
data1 = awgn(data1,s,'measured');
%data1=xx;
data2 = data1/sqrt(sum(real(data1).*real(data1)+imag(data1).*imag(data1))/length(data1));
scal = 4;
coef = cwt(data2,scal,'haar');
coef = (coef);
%coef(1) = coef(2);
%subplot(3,1,1);
%plot(abs(coef(1:8000)));
%ylabel('a');
ccc = cwt(abs(coef),scal,'haar');
%ccc(1) = ccc(2);
a=abs(ccc(1:8000));
subplot(2,2,1);
plot(a);xlabel('sample size');
ylabel('|HWT|');
%testfft = fft(abs(ccc),len);
%dd = abs(testfft(10:8000));
b=medfilt1(a,20);
%dd(1) = dd(2);
v_qam=var(b(1:2000));
%m_qam=mean(b);
ofdm(m,snr)=v_qam;%end%/(m_qam).^2;
end
end
%plot(bfsk,'-p');
%xlabel('SNR(dB)');
%ylabel('VAR');
%legend('qam','bpsk','bfsk');
%hold on
a=mean(bfsk),b=mean(bpsk),c=mean(qam),d=mean(ofdm);%求包络方差的平均值
%绘制不同信号包络方差随信噪比的变化
i=0:25;plot(i,a,'--',i,b,'-p',i,c,'-o',i,d,'+');xlabel('SNR(dB)');ylabel('VAR');legend('bfsk','bpsk','qam','ofdm');grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -