matlab生成正弦信号加高斯白噪声
时间: 2023-07-13 15:13:52 浏览: 412
生成正弦信号可以使用 `sin` 函数,高斯白噪声可以使用 `randn` 函数,将两者结合可以得到正弦信号加高斯白噪声的信号。
下面是一个示例代码:
```matlab
% 生成正弦信号
fs = 1000; % 采样率
t = 0:1/fs:1; % 时间向量
f = 10; % 正弦信号频率
x = sin(2*pi*f*t); % 正弦信号
% 生成高斯白噪声
n = length(x); % 信号长度
sigma = 0.1; % 噪声标准差
noise = sigma * randn(1,n); % 高斯白噪声
% 信号相加
y = x + noise;
% 绘制信号图像
figure
subplot(3,1,1)
plot(t,x)
xlabel('时间 (s)')
ylabel('幅值')
title('正弦信号')
subplot(3,1,2)
plot(t,noise)
xlabel('时间 (s)')
ylabel('幅值')
title('高斯白噪声')
subplot(3,1,3)
plot(t,y)
xlabel('时间 (s)')
ylabel('幅值')
title('正弦信号加高斯白噪声')
```
运行代码可以得到正弦信号加高斯白噪声的图像。
相关问题
matlab生成实正弦信号和高斯白噪声
要生成实正弦信号和高斯白噪声,你可以使用MATLAB中的函数来创建它们。下面是一个示例代码,展示了如何生成实正弦信号和高斯白噪声,并将它们相加得到一个复合信号:
```matlab
% 设置参数
Fs = 1000; % 采样频率
t = 0:1/Fs:1; % 时间向量
f = 10; % 正弦信号频率
A = 1; % 正弦信号幅度
% 生成正弦信号
sineSignal = A*sin(2*pi*f*t);
% 生成高斯白噪声
noise = randn(size(t));
% 将正弦信号和高斯白噪声相加
compositeSignal = sineSignal + noise;
% 绘制信号
figure;
subplot(3,1,1);
plot(t, sineSignal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Sine Signal');
subplot(3,1,2);
plot(t, noise);
xlabel('Time (s)');
ylabel('Amplitude');
title('Gaussian White Noise');
subplot(3,1,3);
plot(t, compositeSignal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Composite Signal');
```
在这个示例中,我们使用了一个采样频率为1000Hz的时间向量`t`,并设定了一个频率为10Hz的正弦信号`sineSignal`。然后,使用`randn`函数生成了与时间向量`t`相同大小的高斯白噪声`noise`。
最后,我们将正弦信号和高斯白噪声相加,得到了复合信号`compositeSignal`。我们使用`subplot`函数将正弦信号、高斯白噪声和复合信号在不同子图中进行绘制。
希望这个示例对你有所帮助!如果还有其他问题,请随时提问。
matlab生成带限的高斯白噪声
你可以使用MATLAB中的`awgn`函数来生成带限的高斯白噪声。该函数的语法如下:
```matlab
y = awgn(x, snr, 'measured', 'db', 'l');
```
其中,`x`是原始信号,`snr`是信噪比,`'measured'`表示根据信号计算噪声功率,`'db'`表示信噪比以分贝为单位,`'l'`表示生成的噪声是带限的。
例如,以下代码生成带限为200 Hz的高斯白噪声:
```matlab
fs = 1000; % 采样率
t = 0:1/fs:1; % 时间向量
x = sin(2*pi*100*t); % 原始信号,100 Hz正弦波
snr = 10; % 信噪比
y = awgn(x, snr, 'measured', 'db', 'l'); % 生成带限高斯白噪声
```
在上面的代码中,原始信号是一个100 Hz正弦波,信噪比为10 dB,生成的噪声是带限为200 Hz的高斯白噪声。
阅读全文