当前位置: 首页 > news >正文

MATLAB实现白噪声与色噪声仿真

MATLAB实现白噪声与色噪声仿真,并绘制其自相关函数和功率谱密度函数


一、仿真代码实现

%% 参数设置
clear; clc; close all;
fs = 1000;        % 采样频率(Hz)
t = 0:1/fs:1-1/fs;% 时间向量(1秒)
N = length(t);    % 信号长度%% 1. 生成白噪声
white_noise = randn(1,N); % 高斯白噪声%% 2. 生成色噪声(以带通滤波为例)
[b,a] = butter(4, [0.2 0.3]); % 4阶带通滤波器(200-300Hz)
colored_noise = filter(b,a,white_noise);%% 3. 自相关函数计算
[r_white,lags] = xcorr(white_noise,'biased'); % 白噪声自相关
[r_color,lags] = xcorr(colored_noise,'biased'); % 色噪声自相关%% 4. 功率谱密度计算
[Pxx,f] = periodogram(white_noise,[],N,fs); % 白噪声PSD
[Pyy,f] = periodogram(colored_noise,[],N,fs);% 色噪声PSD%% 5. 绘图
figure;% 白噪声分析
subplot(2,2,1);
plot(t,white_noise);
title('白噪声时域波形');
xlabel('时间(s)'); ylabel('幅值');subplot(2,2,2);
stem(lags/fs,r_white*fs/N);
title('白噪声自相关函数');
xlabel('归一化时延'); ylabel('幅度');
xlim([-0.1 0.1]);subplot(2,2,3);
plot(f,10*log10(Pxx));
title('白噪声功率谱密度');
xlabel('频率(Hz)'); ylabel('dB/Hz');
xlim([0 500]);% 色噪声分析
subplot(2,2,4);
plot(t,colored_noise);
title('色噪声时域波形');
xlabel('时间(s)'); ylabel('幅值');figure;subplot(2,1,1);
stem(lags/fs,r_color*fs/N);
title('色噪声自相关函数');
xlabel('归一化时延'); ylabel('幅度');
xlim([-0.1 0.1]);subplot(2,1,2);
plot(f,10*log10(Pyy));
title('色噪声功率谱密度');
xlabel('频率(Hz)'); ylabel('dB/Hz');
xlim([0 500]);

二、关键特性分析

1. 时域特性
噪声类型波形特征统计特性
白噪声短时强波动,无周期性均值=0,方差恒定
色噪声波动幅度相对平缓均值=0,方差可能时变
2. 自相关函数
% 自相关函数特性对比
figure;
subplot(2,1,1);
plot(lags/fs,r_white*fs/N);
title('白噪声自相关函数');
xlabel('时延(s)'); ylabel('归一化幅度');
xlim([-0.001 0.001]);subplot(2,1,2);
plot(lags/fs,r_color*fs/N);
title('色噪声自相关函数');
xlabel('时延(s)'); ylabel('归一化幅度');
xlim([-0.001 0.001]);
  • 白噪声:自相关函数在零时延处为峰值,两侧快速衰减至零(δ函数特性)
  • 色噪声:自相关函数存在非零拖尾,表明时域相关性
3. 功率谱密度
% 功率谱密度对比
figure;
subplot(2,1,1);
plot(f,10*log10(Pxx));
title('白噪声功率谱密度');
xlabel('频率(Hz)'); ylabel('dB/Hz');
xlim([0 500]);subplot(2,1,2);
plot(f,10*log10(Pyy));
title('色噪声功率谱密度');
xlabel('频率(Hz)'); ylabel('dB/Hz');
xlim([0 500]);
  • 白噪声:全频段功率谱密度平坦(约-3dB/Hz)
  • 色噪声:在滤波器通带(200-300Hz)呈现明显能量集中

三、典型应用场景

  1. 白噪声仿真

    % 高斯白噪声
    gn = 0.5*randn(1,fs); 
    % 均匀白噪声
    un = 0.5*(rand(1,fs)-0.5);
    
  2. 色噪声生成方法

    • 低通色噪声:通过低通滤波器

      [b,a] = butter(4,0.2);
      colored = filter(b,a,randn(1,N));
      
    • 粉红噪声:使用Voss-McCartney算法

      function pink = pink_noise(N)white = randn(N,1);b = [0.049922035, -0.09599352, 0.050612699, -0.004408786];a = [1, -2.494956002, 2.017265875, -0.522189400];pink = filter(b,a,white);
      end
      

四、扩展实验建议

  1. 多通道噪声分析

    % 生成多通道有色噪声
    [b1,a1] = butter(4,0.2);
    [b2,a2] = butter(6,0.3);
    noise1 = filter(b1,a1,randn(1,N));
    noise2 = filter(b2,a2,randn(1,N));
    
  2. 实时噪声仿真

    % 使用音频设备实时采集
    audioDeviceReader('SampleRate',fs);
    
  3. 噪声抑制对比

    % 维纳滤波去噪
    [dpsd,f] = pwelch(noise,hamming(256));
    H = 1./dpsd; % 理想维纳滤波器
    denoised = filter(H,1,noise);
    

参考代码 白噪声与色噪声的仿真样例 www.youwenfan.com/contentcsl/79805.html

五、注意事项

  1. 频率轴校准

    f = (0:N/2)*fs/N; % 正确计算频率轴
    
  2. 功率谱单位转换

    % 从V²/Hz转换为dB/Hz
    PSD_dB = 10*log10(PSD);
    
  3. 随机种子控制

    rng(0); % 固定随机种子保证可重复性
    

该方法通过对比白噪声与色噪声的时域波形、自相关函数和功率谱密度,清晰展示了二者的本质区别。实际应用中可根据具体需求选择噪声类型,并通过滤波器设计实现噪声特性控制。

http://www.dtcms.com/a/589565.html

相关文章:

  • 甘德县公司网站建设工业设计公司如何运营
  • JAVA-Redis上
  • 免费空间 上传网站虚拟主机推荐
  • mysql配置主从同步
  • 基于SpringBoot+Vue+协同过滤算法的在线旅游系统
  • 【高并发服务器:HTTP应用】十六、HttpContext上下文模块 HttpServer服务器模块 服务器测试
  • 河南科兴建设有限公司网站茂名住房证书城乡建设局官方网站
  • MySQL JSON查询与索引
  • claude code 自定义命令
  • NET_CAPABILITY_VALIDATED 检测android外网是否可用
  • Gin使用
  • SpringAI整合deepseek的一个简单入门案例
  • 突破智能体训练效率瓶颈:Tree Training如何通过共享前缀重用实现3.9倍加速?
  • Java面试题及答案整理( 2025年11月更新版,持续更新...)
  • 定制营销型网站公司色目人
  • 网站普查建设背景网站推广建议
  • 做网站永久嘟嘟浏览器
  • PS1模拟器 DuckStation更新最新版整合 下载即玩 附PS1Bios/游戏/金手指 安卓版+电脑版
  • Java复习事务相关 mysql事务隔离级别 spring事务的传播机制 2025年11月9日
  • 做网站公司排行榜洛阳做网站公司电话
  • 如何发布网站站长是什么职位
  • Vue基本路由
  • 基于springboot的作业管理系统设计与实现
  • Tauri开发手记——1.开发环境
  • 天翼云 ECS 弹性云主机的IP地址无法访问,无法访问 ECS 的网站,解决方案(随手记)
  • 名费网站制作视频教程淘宝代运营公司哪家好
  • 【开题答辩全过程】以 基于springboot美食分享网站为例,包含答辩的问题和答案
  • 福永自适应网站建智能建站系统官网
  • 【FPGA+DSP系列】——MATLAB simulink仿真整流电路
  • (* clock_buffer_type=“NONE“ *)