matlab正弦函数代码加噪声
时间: 2023-08-10 14:09:31 浏览: 241
可以使用`awgn`函数在正弦函数中添加高斯噪声。以下是一个示例代码:
```matlab
% 生成正弦函数
t = 0:0.01:2*pi;
x = sin(t);
% 添加高斯噪声
snr = 10; % 信噪比
y = awgn(x, snr, 'measured');
% 绘制图形
plot(t,x,'b',t,y,'r');
legend('原始信号','添加噪声后的信号');
```
在上面的代码中,`t`是时间轴,`x`是正弦函数。`awgn`函数接受三个参数:原始信号、信噪比和测量方式。`measured`表示在添加噪声时,使用原始信号的功率来计算噪声的功率。最后,使用`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);
```
阅读全文