Can I specify the detrending option in the PWELCH function in Signal Processing Toolbox 6.0 (R13) similar to the syntax of the PSD function? I can detrend my signal using the PSD function, the help on the PSD function mentions that it may be removed and will be replaced by the PWELCH function. However, PWELCH function does not have the "dflag" option, like the PSD function.
John Williams answered .
2025-11-20
In MATLAB's Signal Processing Toolbox (R13), the pwelch function does not have the direct dflag option for detrending that is present in the older psd function. However, you can still perform detrending manually before calling the pwelch function.
Here’s how you can handle it:
Detrending Before Using pwelch:
pwelch function itself does not include a dflag option, but you can detrend the signal manually using the detrend function (or similar methods) before passing it to pwelch.Alternative Using pwelch:
dflag = 'linear' in psd), you can apply detrend on the signal.
% Example signal
Fs = 1000; % Sampling frequency (Hz)
t = 0:1/Fs:1; % Time vector
x = cos(2*pi*50*t) + randn(size(t)); % Example signal with noise
% Detrend the signal (linear detrending by default)
x_detrended = detrend(x);
% Use pwelch with detrended signal
[pxx, f] = pwelch(x_detrended, [], [], [], Fs);
% Plot the result
figure;
plot(f, 10*log10(pxx)); % Plot in dB
xlabel('Frequency (Hz)');
ylabel('Power/Frequency (dB/Hz)');
title('Power Spectral Density (After Detrending)');
grid on;
detrend(x) function removes a linear trend from the signal x, which is the default behavior for dflag = 'linear' in the older psd function.pwelch: After detrending the signal, you can call pwelch to compute the power spectral density.If you need other types of detrending, such as removing a constant (mean removal) or a custom polynomial trend, you can use detrend(x, 'constant') or specify a higher-order polynomial with detrend(x, order).
x_detrended = detrend(x, 'constant'); removes the mean of the signal.x_detrended = detrend(x, 2); removes a quadratic trend.For most cases, detrending manually before applying pwelch is a flexible approach. Let me know if you need more specific details!