news 2026/7/9 18:59:11

MATLAB代码来生成根升余弦滤波器,并绘制其时域和频域特性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MATLAB代码来生成根升余弦滤波器,并绘制其时域和频域特性

根升余弦滤波器完整实现

%% 根升余弦滤波器生成与分析clear all;close all;clc;%% 参数设置Fs=1000;% 采样频率 (Hz)T=1;% 符号周期 (s)sps=10;% 每符号采样点数beta=0.5;% 滚降因子 (0~1)filter_span=6;% 滤波器跨度 (符号数)%% 生成根升余弦滤波器% 方法1: 使用rcosdesign函数 (推荐)h_rc=rcosdesign(beta,filter_span,sps,'sqrt');% 方法2: 手动实现 (备用方法)% t = (-filter_span*T/2 : 1/Fs : filter_span*T/2) + 1e-8; % 避免除零% h_rc_manual = manual_root_raised_cosine(t, T, beta);%% 时域分析t_filter=(-filter_span*sps/2:filter_span*sps/2)/(sps/T);figure('Position',[100,100,1200,800]);% 时域波形subplot(2,3,1);stem(t_filter,h_rc,'b','filled','MarkerSize',4);hold on;plot(t_filter,h_rc,'r-','LineWidth',1.5);grid on;xlabel('时间 (符号周期)');ylabel('幅度');title('根升余弦滤波器时域响应');legend('采样点','包络','Location','best');% 滤波器冲激响应细节subplot(2,3,2);plot(t_filter,h_rc,'b-','LineWidth',2);grid on;xlabel('时间 (符号周期)');ylabel('幅度');title('滤波器冲激响应');xlim([-3,3]);% 眼图模拟subplot(2,3,3);% 生成随机数据并滤波data=randi([01],1,100)*2-1;% BPSK信号upsampled_data=upsample(data,sps);tx_signal=conv(upsampled_data,h_rc,'same');% 绘制眼图plot_eye_diagram(tx_signal,sps,2);title('发射信号眼图');%% 频域分析% 计算频率响应N_fft=1024;H_rc=fftshift(fft(h_rc,N_fft));f=(-N_fft/2:N_fft/2-1)*(Fs/N_fft)/(1/T);% 归一化频率% 幅度响应subplot(2,3,4);plot(f,20*log10(abs(H_rc)/max(abs(H_rc))),'b-','LineWidth',2);grid on;xlabel('归一化频率 (fT)');ylabel('幅度 (dB)');title('根升余弦滤波器幅度响应');xlim([-2,2]);ylim([-80,5]);% 相位响应subplot(2,3,5);phase_response=angle(H_rc);phase_response_unwrapped=unwrap(phase_response);plot(f,phase_response_unwrapped,'r-','LineWidth',2);grid on;xlabel('归一化频率 (fT)');ylabel('相位 (弧度)');title('相位响应');xlim([-2,2]);% 群延迟subplot(2,3,6);group_delay=-diff(phase_response_unwrapped)./diff(f*2*pi);plot(f(1:end-1),group_delay,'g-','LineWidth',2);grid on;xlabel('归一化频率 (fT)');ylabel('群延迟 (样本)');title('群延迟响应');xlim([-2,2]);%% 不同滚降因子的比较figure('Position',[100,100,1000,600]);beta_values=[0.2,0.5,0.8,1.0];colors=['b','r','g','m'];t_compare=(-filter_span*sps/2:filter_span*sps/2)/(sps/T);subplot(1,2,1);hold on;fori=1:length(beta_values)h_temp=rcosdesign(beta_values(i),filter_span,sps,'sqrt');plot(t_compare,h_temp,colors(i),'LineWidth',2,...'DisplayName',['\beta = ',num2str(beta_values(i))]);endgrid on;xlabel('时间 (符号周期)');ylabel('幅度');title('不同滚降因子的时域响应');legend('show');xlim([-3,3]);subplot(1,2,2);hold on;fori=1:length(beta_values)h_temp=rcosdesign(beta_values(i),filter_span,sps,'sqrt');H_temp=fftshift(fft(h_temp,N_fft));f_compare=(-N_fft/2:N_fft/2-1)*(Fs/N_fft)/(1/T);plot(f_compare,20*log10(abs(H_temp)/max(abs(H_temp))),...colors(i),'LineWidth',2,...'DisplayName',['\beta = ',num2str(beta_values(i))]);endgrid on;xlabel('归一化频率 (fT)');ylabel('幅度 (dB)');title('不同滚降因子的频域响应');legend('show');xlim([-2,2]);ylim([-80,5]);%% ISI性能分析figure('Position',[100,100,800,400]);% 测试符号间干扰test_symbols=[0,0,1,0,0];% 单个脉冲test_signal_upsampled=upsample(test_symbols,sps);filtered_signal=conv(test_signal_upsampled,h_rc,'same');% 找到峰值位置[~,peak_idx]=max(filtered_signal);sampling_points=peak_idx:sps:length(filtered_signal);subplot(1,2,1);plot(filtered_signal,'b-','LineWidth',2);hold on;stem(sampling_points,filtered_signal(sampling_points),'ro','filled');grid on;xlabel('采样点');ylabel('幅度');title('单个脉冲的滤波器响应');legend('滤波器输出','采样时刻');% ISI分析 - 采样时刻的值subplot(1,2,2);isi_samples=filtered_signal(sampling_points);stem(0:length(isi_samples)-1,isi_samples,'b','filled');hold on;% 标记主瓣和旁瓣plot([2,2],[0,max(isi_samples)],'r--','LineWidth',1.5);text(2.2,max(isi_samples)*0.8,'主瓣','Color','r');grid on;xlabel('符号索引');ylabel('幅度');title('采样时刻的ISI分析');%% 自定义函数定义functionplot_eye_diagram(signal,samples_per_symbol,num_eyes)% 绘制眼图eye_length=samples_per_symbol*num_eyes;num_segments=floor(length(signal)/eye_length)-1;hold on;fori=1:num_segments start_idx=(i-1)*eye_length+1;end_idx=start_idx+eye_length-1;segment=signal(start_idx:end_idx);time_axis=(0:length(segment)-1)/samples_per_symbol;plot(time_axis,segment,'b-','LineWidth',0.5);endxlabel('时间 (符号周期)');ylabel('幅度');grid on;hold off;endfunctionh=manual_root_raised_cosine(t,T,beta)% 手动计算根升余弦滤波器h=zeros(size(t));fori=1:length(t)t_val=t(i);ifabs(t_val)==T/(4*beta)h(i)=(beta/sqrt(2*T))*...((1+2/pi)*sin(pi/(4*beta))+(1-2/pi)*cos(pi/(4*beta)));elseift_val==0h(i)=(1/sqrt(T))*(1+beta*(4/pi-1));elseterm1=sin(pi*(1-beta)*t_val/T+4*beta*t_val/T*cos(pi*(1+beta)*t_val/T));term2=pi*t_val/T*(1-(4*beta*t_val/T).^2);h(i)=(1/sqrt(T))*term1./term2;endendend%% 滤波器特性总结fprintf('=== 根升余弦滤波器特性总结 ===\n');fprintf('滚降因子 β: %.2f\n',beta);fprintf('滤波器长度: %d 个采样点\n',length(h_rc));fprintf('每符号采样点数: %d\n',sps);fprintf('滤波器跨度: %d 个符号\n',filter_span);% 计算关键参数energy=sum(h_rc.^2);fprintf('滤波器能量: %.4f\n',energy);% 检查奈奎斯特准则sampling_offset=round(length(h_rc)/2)+sps;isi_values=h_rc(sampling_offset:sps:end);isi_power=sum(isi_values.^2)-h_rc(round(length(h_rc)/2))^2;fprintf('ISI功率: %.6f\n',isi_power);

特性分析

1.时域特性

  • 主瓣宽度:与滚降因子β相关
  • 旁瓣衰减:决定符号间干扰(ISI)大小
  • 过零点:在整数倍符号周期处过零,满足奈奎斯特准则

2.频域特性

  • 带宽B = (1 + β) / (2T) Hz
  • 滚降特性:平滑的过渡带
  • 带外抑制:良好的频谱利用率

3.滚降因子影响

  • β较小(0.2-0.3):频谱效率高,但对定时误差敏感
  • β中等(0.4-0.6):平衡频谱效率和抗干扰能力
  • β较大(0.7-1.0):抗干扰能力强,但频谱效率低

参考代码 根升余弦滤波器www.3dddown.com/csa/82526.html

实际应用

  1. 无线通信:常用β=0.35(卫星)或β=0.5(蜂窝)
  2. 有线通信:根据信道特性选择β值
  3. 数字电视:通常使用较小的滚降因子
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 1:52:29

27、网络监控与审计实践指南

网络监控与审计实践指南 在当今数字化时代,网络安全至关重要。监控和审计网络活动能够帮助我们及时发现潜在的安全威胁,保障系统的稳定运行。本文将介绍一些常见的网络监控和审计工具及其实践操作,通过实际的实验步骤和相关问题解答,帮助大家更好地理解和掌握这些知识。 …

作者头像 李华
网站建设 2026/7/10 11:06:05

【金猿产品展】智慧芽 Eureka——更懂技术创新的AI Agent平台

智慧芽产品该产品由智慧芽投递并参与金猿组委会数据猿上海大数据联盟共同推出的《2025中国大数据产业年度创新服务产品——十年标杆产品》榜单/奖项评选。大数据产业创新服务媒体——聚焦数据 改变商业随着AI技术的突飞猛进,通用大模型开始进入各行各业。然而&…

作者头像 李华
网站建设 2026/7/10 11:05:52

Kotaemon中的索引构建速度影响因素分析

Kotaemon中的索引构建速度影响因素分析 在企业级智能问答系统日益普及的今天,一个常被低估但至关重要的环节正悄然决定着系统的敏捷性与可维护性——知识索引的构建速度。对于采用检索增强生成(RAG)架构的系统而言,即使拥有最先进…

作者头像 李华
网站建设 2026/7/10 11:09:28

Eclipse+maven+selenium自动化测试用例入门

相关的开发环境搭建参考以下文章: Eclipsemavenselenium自动化测试开发环境搭建 确认环境搭建成功后,在src/test/java目录下,defaut package右键新建class,命名为:GoogleTest,相关代码如下: i…

作者头像 李华
网站建设 2026/7/10 10:28:18

Kotaemon在政务智能问答中的合规性设计考量

Kotaemon在政务智能问答中的合规性设计考量 在政务服务日益智能化的今天,公众对AI助手的期待早已超越了“能答上来”,而是要求它“答得准、说得清、可追溯”。一个回答错误可能误导市民错过申报时限,一次数据泄露可能动摇公众对数字政府的信任…

作者头像 李华
网站建设 2026/7/9 20:11:17

Kotaemon支持批量导入知识文档并自动索引

Kotaemon支持批量导入知识文档并自动索引 在企业智能化转型的浪潮中,一个常见却棘手的问题浮出水面:如何让AI真正“懂”企业的内部知识?客服机器人面对新产品手册答非所问,技术支持系统对最新政策变更毫无反应——这些并非模型能力…

作者头像 李华