awgn 是未定義的變量或暫未實(shí)現(xiàn)的函數(shù)。
位于文件 D:\soft\Documents\baltamatica\信號(hào)處理2.m (第 16 行)
noisy_signal = awgn(signal, SNR, 'measured');
%% 信號(hào)處理綜合示例:生成/加噪/濾波/分析
clc; clear; close all;
% 基礎(chǔ)參數(shù)設(shè)置
fs = 1000; % 采樣率1kHz
t = 0:1/fs:1; % 1秒時(shí)長信號(hào)
freq = [50, 120, 200]; % 多頻信號(hào)成分
%% 1.生成原始信號(hào)(多頻正弦組合)
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; % 信噪比設(shè)置
noisy_signal = awgn(signal, SNR, 'measured');
%% 3.FFT頻譜分析
N = length(t);
f = (-N/2:N/2-1)*(fs/N); % 頻率軸
% 原始信號(hào)頻譜
fft_orig = fftshift(abs(fft(signal)/N));
% 加噪信號(hào)頻譜
fft_noisy = fftshift(abs(fft(noisy_signal)/N));
%% 4.濾波器設(shè)計(jì)(FIR低通)
fc = 150; % 截止頻率150Hz
order = 100; % 濾波器階數(shù)
b = fir1(order, fc/(fs/2), 'low'); % 生成濾波器系數(shù)
%% 5.信號(hào)濾波處理
filtered_signal = filter(b, 1, noisy_signal);
% 濾波后信號(hào)頻譜
fft_filtered = fftshift(abs(fft(filtered_signal)/N));
%% 6.結(jié)果可視化
figure('Color','w','Position',[100,100,800,600])
% 時(shí)域信號(hào)對(duì)比
subplot(3,1,1)
plot(t, signal, 'b', t, noisy_signal, 'r:', t, filtered_signal, 'g--')
legend('原始信號(hào)','加噪信號(hào)','濾波信號(hào)')
xlabel('時(shí)間 (s)'); ylabel('幅值'); title('時(shí)域信號(hào)對(duì)比')
xlim([0 0.1]) % 顯示前0.1秒細(xì)節(jié)
% 頻域?qū)Ρ?/p>
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])
%% 附加:濾波器頻率響應(yīng)可視化
figure('Color','w')
freqz(b, 1, 1024, fs)
title('FIR低通濾波器頻率響應(yīng)')