在SNR计算期间,下标索引必须是实数正整数或逻辑

时间:2019-05-20 07:31:27

标签: matlab fft indices

我正在尝试计算非正弦信号的SNR,而在计算信号功率时却出现错误。请帮助,谢谢您

我试图增加FFT和泄漏的长度,即:N = 2 ^ nextpow2(length(signal));但没有运气。 采样率:16000

我的代码如下:

[signal, Fs] = audioread('40db_heart_insulation.wav');
N               = 8192; % FFT length
leak            = 150; %bins
fft_s           = fft(signal,N);
abs_fft_s       = abs(fft_s);
plot (abs_fft_s)
[~,p]           = max(abs_fft_s(1:N/2));
sigpos= [p-leak:p+leak N-p-leak:N-p+leak];% Finding the peak
sig_pow         = sum(abs_fft_s(sigpos));

错误: 下标索引必须是实数正整数或逻辑。

心音错误(第17行) sig_pow = sum(abs_fft_s(sigpos)); %信号功率=对应于信号的分档大小的总和

1 个答案:

答案 0 :(得分:0)

您可能有一个 func animateFilterView(coord: CGFloat) { if coord >= 250 { filterView?.labelStackView.isHidden = true filterViewHeightConstraint.constant = 50 } else if coord <= 10 { filterView?.labelStackView.isHidden = false filterViewHeightConstraint.constant = 110 } UIView.animate( withDuration: 5.4, animations: { self.filterView.superview?.layoutIfNeeded() }) } 的负值,例如sigpos <N。尝试添加以下行:

p+leak