matlab生成正弦信号/指数信号, x 域分别是 a1 = 0:1/100:2*pi,b1 = 0:1/100:1;求上述信号的均值和方差;分别添加均匀分布白噪声、正态分布白噪声,再求上述信号的均值和方差;展示上述信号的自相关函数,让其中一个加噪信号通过RC系统去除噪声,修改系统传递函数参数来获得好的滤波效果
时间: 2024-03-09 13:48:32 浏览: 65
基于matlab实现正弦波与白噪声信号波形仿真实验
生成正弦信号的代码如下:
```
a1 = 0:1/100:2*pi;
x1 = sin(a1);
```
生成指数信号的代码如下:
```
b1 = 0:1/100:1;
x2 = exp(b1);
```
求信号的均值和方差的代码如下:
```
mean_x1 = mean(x1);
var_x1 = var(x1);
mean_x2 = mean(x2);
var_x2 = var(x2);
```
添加均匀分布白噪声的代码如下:
```
noise_uniform = rand(size(x1))*2-1; % 生成均匀分布白噪声
x1_with_noise_uniform = x1 + noise_uniform; % 在信号中加入均匀分布白噪声
```
添加正态分布白噪声的代码如下:
```
noise_normal = randn(size(x2)); % 生成正态分布白噪声
x2_with_noise_normal = x2 + noise_normal; % 在信号中加入正态分布白噪声
```
再次求加噪声后信号的均值和方差的代码如下:
```
mean_x1_with_noise_uniform = mean(x1_with_noise_uniform);
var_x1_with_noise_uniform = var(x1_with_noise_uniform);
mean_x2_with_noise_normal = mean(x2_with_noise_normal);
var_x2_with_noise_normal = var(x2_with_noise_normal);
```
展示信号的自相关函数的代码如下:
```
acf_x1 = xcorr(x1);
acf_x2 = xcorr(x2);
subplot(2,1,1);
plot(acf_x1);
title('自相关函数 - 正弦信号');
subplot(2,1,2);
plot(acf_x2);
title('自相关函数 - 指数信号');
```
其中,`mean_x1` 和 `var_x1` 是正弦信号的均值和方差,`mean_x2` 和 `var_x2` 是指数信号的均值和方差,`x1_with_noise_uniform` 和 `x2_with_noise_normal` 分别是加噪声后的正弦信号和指数信号,`mean_x1_with_noise_uniform` 和 `var_x1_with_noise_uniform` 是加噪声后的正弦信号的均值和方差,`mean_x2_with_noise_normal` 和 `var_x2_with_noise_normal` 是加噪声后的指数信号的均值和方差,`acf_x1` 和 `acf_x2` 分别是正弦信号和指数信号的自相关函数。
现在让正弦信号加上均匀分布白噪声,并通过RC系统去除噪声。RC系统的传递函数为:
$$H(s) = \frac{1}{RCs+1}$$
其中,R和C是系统的参数。
去除噪声的代码如下:
```
R = 1;
C = 1;
t = 0:0.01:2*pi;
% 生成输入信号
input_signal = sin(t) + rand(size(t))*2-1;
% 计算系统传递函数的频率响应
w = logspace(-2,2,1000);
H = 1 ./ (R*C*1j*w+1);
% 对输入信号进行傅里叶变换
input_signal_fft = fft(input_signal);
% 将频域的信号乘以系统的频率响应,得到输出信号的频域表示
output_signal_fft = input_signal_fft .* H;
% 对输出信号进行傅里叶反变换,得到时域信号
output_signal = ifft(output_signal_fft);
% 绘制去噪后的信号和原始信号
plot(t,input_signal);
hold on;
plot(t,output_signal);
legend('原始信号','去噪信号');
```
可以通过调整R和C的值来获得更好的滤波效果。
阅读全文