awgn 是未定义的变量或暂未实现的函数。

标签: 问题反馈——未实现的功能

myidcn 2025-03-25 17:03:09

awgn 是未定义的变量或暂未实现的函数。


位于文件 D:\soft\Documents\baltamatica\信号处理2.m (第 16 行)

noisy_signal = awgn(signal, SNR, 'measured');



%% 信号处理综合示例:生成/加噪/滤波/分析

clc; clear; close all;


% 基础参数设置

fs = 1000;          % 采样率1kHz

t = 0:1/fs:1;       % 1秒时长信号

freq = [50, 120, 200];  % 多频信号成分


%% 1.生成原始信号(多频正弦组合)

signal = 0.5*sin(2*pi*freq(1)*t) + ...

1.2*sin(2*pi*freq(2)*t + pi/4) + ...

0.8*cos(2*pi*freq(3)*t);


%% 2.添加高斯白噪声

SNR = 15; % 信噪比设置

noisy_signal = awgn(signal, SNR, 'measured');


%% 3.FFT频谱分析

N = length(t);

f = (-N/2:N/2-1)*(fs/N); % 频率轴


% 原始信号频谱

fft_orig = fftshift(abs(fft(signal)/N));


% 加噪信号频谱

fft_noisy = fftshift(abs(fft(noisy_signal)/N));


%% 4.滤波器设计(FIR低通)

fc = 150;       % 截止频率150Hz

order = 100;    % 滤波器阶数

b = fir1(order, fc/(fs/2), 'low'); % 生成滤波器系数


%% 5.信号滤波处理

filtered_signal = filter(b, 1, noisy_signal);


% 滤波后信号频谱

fft_filtered = fftshift(abs(fft(filtered_signal)/N));


%% 6.结果可视化

figure('Color','w','Position',[100,100,800,600])


% 时域信号对比

subplot(3,1,1)

plot(t, signal, 'b', t, noisy_signal, 'r:', t, filtered_signal, 'g--')

legend('原始信号','加噪信号','滤波信号')

xlabel('时间 (s)'); ylabel('幅值'); title('时域信号对比')

xlim([0 0.1]) % 显示前0.1秒细节


% 频域对比

subplot(3,1,2)

plot(f, fft_orig, 'b', f, fft_noisy, 'r:')

legend('原始频谱','加噪频谱')

xlabel('频率 (Hz)'); ylabel('幅值'); title('频谱分析')

xlim([0 300])


subplot(3,1,3)

plot(f, fft_filtered, 'g')

legend('滤波后频谱')

xlabel('频率 (Hz)'); ylabel('幅值'); title('滤波效果')

xlim([0 300])


%% 附加:滤波器频率响应可视化

figure('Color','w')

freqz(b, 1, 1024, fs)

title('FIR低通滤波器频率响应')


回复

社区小助手 2025-03-27 #1

awgn函数当前版本确实还没有,下个版本会上线


回复

重置 提交