给已知信号加入海洋环境噪声的matlab代码
时间: 2023-05-19 08:06:38 浏览: 131
以下是一个简单的 Matlab 代码,可以将已知信号加入海洋环境噪声:
```matlab
% 生成海洋环境噪声
fs = 44100; % 采样率
T = 1; % 信号时长
t = 0:1/fs:T-1/fs; % 时间序列
f1 = 1000; % 噪声频率范围
f2 = 2000;
noise = randn(size(t)); % 生成高斯白噪声
b = fir1(100, [f1 f2]/(fs/2)); % 生成带通滤波器
noise = filter(b, 1, noise); % 对噪声进行滤波
noise = noise / max(abs(noise)); % 归一化
% 生成已知信号
t = 0:1/fs:T-1/fs; % 时间序列
f = 100; % 信号频率
x = sin(2*pi*f*t); % 正弦波信号
% 将噪声加入信号中
SNR = 10; % 信噪比
noise_power = norm(noise)^2 / length(noise); % 计算噪声功率
signal_power = norm(x)^2 / length(x); % 计算信号功率
k = sqrt(signal_power / noise_power / 10^(SNR/10)); % 计算缩放系数
y = x + k * noise; % 加入噪声
% 绘制图像
figure;
subplot(3,1,1);
plot(t, x);
title('原始信号');
subplot(3,1,2);
plot(t, noise);
title('海洋环境噪声');
subplot(3,1,3);
plot(t, y);
title('加入噪声后的信号');
```
这段代码首先生成了一个带通滤波器,然后用高斯白噪声生成海洋环境噪声,并对其进行滤波和归一化处理。接着生成了一个正弦波信号,并将噪声加入信号中,以达到一定的信噪比。最后绘制了原始信号、海洋环境噪声和加入噪声后的信号的图像。
阅读全文