%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 随机解调输入信噪比对重构结果影响_仿真实验_现代采样理论、技术及应用
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc; clear; close all;
for i = 1: 30
for j = 1: 10
%% 生成多谐波信号
plot_enable_i = 0; % plot_enable=1:绘制图形,plot_enable=0:不绘制图形
t_simu = 0.1; % 多谐波信号的持续时间,单位s
f_simu = 10000; % 多谐波信号的仿真频率,单位Hz
[input_signal, t_i] = produce_input_signal(f_simu, t_simu, plot_enable_i); % 生成多谐波信号
input_signal_ideal = input_signal; % 无噪声多谐波信号
%% 生成有噪声多谐波信号
in_snr = 10*i; % 输入信号信噪比
signal_var = var(input_signal_ideal); % 无噪声信号方差
noise_factor = sqrt(signal_var/(10^(in_snr/10))); % 白噪声幅值
noise = noise_factor* randn(length(input_signal_ideal), 1); % 生成白噪声
input_signal = noise + input_signal_ideal; % 有噪声多谐波信号
%% 生成m序列
plot_enable_p = 0; % plot_enable=1:绘制图形,plot_enable=0:不绘制图形
t_PRS = t_simu; % m序列的持续时间,单位s (应与多谐波信号一致)
f_PRS = f_simu; % m序列的仿真频率,单位Hz(应与多谐波信号一致)
[pseudo_random_sequence, t_p] = produce_PRS(f_PRS, t_PRS, plot_enable_p); % 生成m序列
%% 混频
plot_enable_m = 0; % plot_enable=1:绘制图形,plot_enable=0:不绘制图形
[mixed_signal, t_m] = mix(pseudo_random_sequence, input_signal, f_simu, plot_enable_m); % 混频
%% 构造低通滤波器
cut_off_freq = 500; % 低通滤波器的截止频率
Q = 0.625; % 低通滤波器的品质因数
fs = 10000; % 双线性离散速率
plot_enable_L = 0; % plot_enable=1:绘制图形,plot_enable=0:不绘制图形
[Hs, H_z] = produce_LPF(cut_off_freq, Q, fs, plot_enable_L); % 构造低通滤波器
%% 滤波
filterd_signal = filter(H_z.num{:}, H_z.den{:}, mixed_signal); % 对混频过的信号进行滤波
%%绘制图形
plot_enable_F = 0;
if plot_enable_F == 1
t_f = t_i; figure; plot(t_f, filterd_signal); grid on;
title('滤波后信号时域表示'); xlabel('时间(s)'); ylabel('幅值(V)'); set(gca,'yLim',[-1 1]);
end
%% 对滤波后信号进行低速均匀采样
sample_freq = 2*cut_off_freq; % 低速均匀采样采样率,低通截止频率的2倍
plot_enable_ds = 0; % plot_enable=1:绘制图形,plot_enable=0:不绘制图形
[sampled_data] = RD_downsample(filterd_signal, f_PRS, sample_freq, plot_enable_ds); % 对滤波后信号进行低速均匀采样
%% 构造感知矩阵
[Theta] = produce_Theta(pseudo_random_sequence, sampled_data, H_z); %构造感知矩阵
%% 信号重构
k = 5; % 信号频点个数
K = 2*k; % 因为原信号是实信号,所以实际频点是单边频点的二倍
plot_enable_r = 0;
[x_sparse_rec, rec_supp] = ompvip(sampled_data, K, Theta); % 用OMP算法重构出的x_sparse是原信号x在频域的频谱
[reconstructed_signal, t_re]=reconstruct(K, Theta, f_PRS, x_sparse_rec, rec_supp, plot_enable_r);
%% 重构效果
plot_enable_mp = 0;
[SNR_in, SNR_out, rec_error] = measure_performance(input_signal, input_signal_ideal, reconstructed_signal, t_i, plot_enable_mp);
SNR_1(j) = SNR_out;
end
SNR(i) = (1/j)*sum(SNR_1);
end
figure; plot(10: 10: 300, SNR); grid on;
title('输入信噪比对重构效果的影响'); xlabel('原信号信噪比(dB)'); ylabel('重构信号信噪比(dB)');
压缩采样之随机解调的matlab仿真
需积分: 5 137 浏览量
2023-05-26
19:35:14
上传
评论
收藏 15KB ZIP 举报
nwsuaf_huasir
- 粉丝: 4086
- 资源: 49
最新资源
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
- python中matplotlib教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈