错误使用 signal.internal.spectral.welchparse>segment_info 段的长度不能大于输入信号的长度。 出错 signal.internal.spectral.welchparse (第 34 行) [L,noverlap,win] = segment_info(M,win1,noverlap1); 出错 pspectrogram (第 30 行) [xw,nx,~,yw,ny,win,~,~,noverlap,~,~,options] = signal.internal.spectral.welchparse(x,esttype,inpArgs{:}); 出错 spectrogram (第 191 行) [varargout{1:nargout}] = pspectrogram({x},'spect',inpArgs{:}); 出错 test (第 20 行) [~, f, t, P] = spectrogram(filtered_data{i}, window_length, overlap, [], fs);
时间: 2023-09-26 16:14:04 浏览: 1097
cyclostationary_toolbox.rar_Cyclic Spectral_cumulant_cyclic.m_循环
这个错误是由于窗口长度(`window_length`)大于输入信号的长度所引起的。为了解决这个问题,你可以考虑以下两种方法:
1. 调整窗口长度:将窗口长度设置为小于等于输入信号的长度。可以根据输入信号的长度来选择一个合适的窗口长度,确保不会超过输入信号的长度。
```matlab
window_length = min(window_length, length(filtered_data{i}));
```
2. 检查输入信号的长度:确保你的输入信号的长度足够长以适应所选窗口长度。如果输入信号的长度较短,你可以考虑在处理之前使用零填充(zero-padding)来增加信号的长度。
```matlab
if length(filtered_data{i}) < window_length
filtered_data{i} = [filtered_data{i}; zeros(window_length - length(filtered_data{i}), 1)];
end
```
将这些修改应用到你的代码中,并再次运行。希望这能够解决你遇到的问题!
阅读全文