matlab正弦函数代码加噪声
时间: 2023-08-10 07:09:31 浏览: 842
下面是一个 MATLAB 正弦函数代码,包括添加噪声的过程:
```matlab
% 生成正弦函数
t = 0:0.1:10;
y = sin(t);
% 添加噪声
noise = 0.5 * randn(size(y)); % 产生与 y 相同大小的随机噪声
y_noisy = y + noise;
% 绘制图形
figure
plot(t, y_noisy, 'o')
hold on
plot(t, y, 'LineWidth', 2)
legend('Noisy Signal', 'Clean Signal')
```
在这个代码中,正弦函数的时间范围为 0 到 10,步长为 0.1,因此一共生成了 101 个数据点。然后,我们使用 `randn` 函数生成了一个与 `y` 相同大小的随机噪声,并将其添加到 `y` 中得到 `y_noisy`。最后,我们使用 `plot` 函数绘制了两条曲线,一条是加了噪声的信号,另一条是没有噪声的原始信号。
相关问题
MATLAB 三角函数拟合
MATLAB中可以使用polyfit函数进行三角函数拟合。首先,需要准备好自变量x和因变量y的数据,然后选择一个适当的三角函数形式(如sin或cos),并确定需要拟合的三角函数的阶数n。接下来,使用polyfit函数进行拟合,该函数的语法如下:
```
p = polyfit(x, y, n)
```
其中,x和y是数据向量,n是需要拟合的三角函数的阶数。p是多项式系数向量,其中包含了拟合的三角函数的系数。
下面是一个使用sin函数进行三角函数拟合的示例代码:
```
% 准备数据
x = 0:0.1:2*pi;
y = sin(x) + randn(size(x))*0.1;
% 进行拟合
n = 5; % 阶数
p = polyfit(x, y, n);
% 绘制拟合结果
xx = 0:0.01:2*pi;
yy = polyval(p, xx);
plot(x, y, 'o', xx, yy);
```
在这个示例中,我们生成了一组带有噪声的sin函数数据,并使用polyfit函数进行了五阶sin函数的拟合。最后,我们绘制了原始数据和拟合结果的图像。
matlab sinad函数源代码
MATLAB中没有内置的sinad函数,但是可以自己编写一个计算信噪比(SNR)和失真总谐波失真(THD)的函数。
下面是一个示例函数代码:
```matlab
function [SNR, THD] = sinad(x, Fs)
% 计算信噪比(SNR)和失真总谐波失真(THD)
% 输入参数:
% x - 输入信号
% Fs - 采样率
% 输出参数:
% SNR - 信噪比
% THD - 失真总谐波失真
% 计算信号功率
P_signal = rms(x)^2;
% 计算噪声功率
N = length(x);
P_noise = sum(x.^2)/N - P_signal;
% 计算信噪比
SNR = 10*log10(P_signal/P_noise);
% 计算失真总谐波失真
f = linspace(0, Fs/2, N/2+1);
X = fft(x)/N;
X_mag = abs(X(1:N/2+1));
X_mag(1) = 0; % DC分量不考虑
THD = 100*sqrt(sum(X_mag(2:end).^2))/rms(x);
```
使用示例:
```matlab
% 生成一个正弦波信号
Fs = 1000; % 采样率
f = 50; % 信号频率
t = 0:1/Fs:1; % 时间序列
x = sin(2*pi*f*t); % 正弦波信号
% 计算信噪比和失真总谐波失真
[SNR, THD] = sinad(x, Fs);
% 输出结果
fprintf('信噪比:%.2f dB\n', SNR);
fprintf('失真总谐波失真:%.2f %%\n', THD);
```
阅读全文