Matlab 信号基频

Matlab 信号基频,matlab,Matlab,我有一个100毫秒的信号。Fs=8000赫兹。nbits=16 fs_orig = 44100; nbits = 16; [signal_orig,fs_orig,nbits]=wavread('oo.wav'); y=resample(signal_orig, 8000,44100); z=y(1:800,1); t=(0:1/8000:0.1-1/8000); plot(t,z);xlabel('Time(s)');ylabel('Amplitude'); 用这种方法计算的样本有多少 N=

我有一个100毫秒的信号。Fs=8000赫兹。nbits=16

fs_orig = 44100;
nbits = 16;
[signal_orig,fs_orig,nbits]=wavread('oo.wav');
y=resample(signal_orig, 8000,44100);
z=y(1:800,1);
t=(0:1/8000:0.1-1/8000);
plot(t,z);xlabel('Time(s)');ylabel('Amplitude');
用这种方法计算的样本有多少

N=fs(Hz)*持续时间(ms)/1000 N=8000*100/1000=800个样品

想知道如何在matlab中计算一个周期的长度吗? 我怎样才能看到信号中有哪些频率?
周期的基频我可以用1/周期时间来计算?

如果你的信号是周期性的(如正弦波、锯齿波等),你可以使用。如果您的信号不是周期性的,最简单的方法是应用傅里叶分析(通过
fft
)并在其频谱中查找对应于最主要频率的峰值

你也应该调查一下


编辑:如果您的信号随时间变化很大,但在小部分(通常<5000毫秒)内是周期性的,如语音信号,我会研究。

鉴于OP正在从WAV文件加载数据,我假设数据不会包含seqperiod将检测到的数字序列。噪音和诸如此类的东西可能会妨碍seqperiod的工作。但是,答案末尾的链接肯定是金色的+1.