Can't understand why Pwelch claims window is larger than input signal
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
segment_length = 1229;
hannw = hann(segment_length);
overlap_length = round(segment_length / 2);
disp(size(SuperTrialH2Hit))
returns 30 207701
[pxx4HH, hz4HH] = pwelch(SuperTrialH2Hit, hannw, overlap_length, nextpower2(numel(SuperTrialH2Hit)), SR);
returns
Error using signal.internal.spectral.welchparse>segment_info (line 345)
The length of the segments cannot be greater than the length of the input signal.
Error in signal.internal.spectral.welchparse (line 34)
[L,noverlap,win] = segment_info(M,winp,noverlap1);
Error in welch (line 56)
signal.internal.spectral.welchparse(x,esttype,args{:});
Error in pwelch (line 174)
[welchOut{1:nargout}] = welch(x,funcName,inputArgs{:});
0 Kommentare
Akzeptierte Antwort
William Rose
am 27 Sep. 2024
Bearbeitet: William Rose
am 27 Sep. 2024
[Edit: correct spelling in my comments.)
You need to use the transpose of the data array. pwelch() finds the spectrum of each column, when the input data is an array. And in your array, the data whose spectra you wish to compute are in rows. See the following, which runs without error.
SuperTrialH2Hit=rand(30,207701);
SR=1; % sampling rate
segment_length = 1229;
hannw = hann(segment_length);
overlap_length = round(segment_length / 2);
disp(size(SuperTrialH2Hit))
[pxx4HH, hz4HH] = pwelch(SuperTrialH2Hit', hannw, overlap_length, ...
nextpow2(numel(SuperTrialH2Hit)), SR);
Good luck.
1 Kommentar
William Rose
am 27 Sep. 2024
@Jude, I'm surprised your code ran, because it uses nextpower2(), which is not a built-in function. I changed it to nextpow2() for my example above.
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Parametric Spectral Estimation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!