matlab sinad函数源代码
时间: 2023-08-10 11:09:41 浏览: 167
高斯白噪声matlab代码-SP-Toolbox-Scilab:SP-工具箱-Scilab
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);
```
阅读全文