绘制EKG信号的傅立叶变换的相位和幅度

时间:2013-11-19 01:24:19

标签: matlab signals fft phase dn

所以我有一个现有的ekg信号,我必须进行傅立叶变换,并绘制相位(角度)和幅度。我的代码如下所示:

x1 = 3.5*ecg(2700);
y1 = sgolayfilt(kron(ones(1,13),x1),0,21);
n = (1:30000)';
del = round(2700*rand(1));
mhb = y1(n+del);
ts = 0.00025;
t = [ts: ts: 7.5];
%plot(t,mhb)
%xlabel('Time(sec)')
%ylabel('Amp'); grid on 

Xf = fft(mhb(t));

w = [-(n/2):1:(n/2)-1]*(1/(ts*n));
w = [-(n/2):1:(n/2)-1]*(1/(ts*n));

subplot(211), plot(w, fftshift(abs(Xf))), grid 
subplot(212), plot(w, fftshift(angle(Xf))), grid

它告诉我这个错误:"下标索引必须是真正的正整数或逻辑。"我非常确定这是正确的,除非我做的事情完全不正确。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

请注意,t是带有值的实数数组(让我们看一下前几个):

>> t(1:10)

ans =

    0.0003    0.0005    0.0008    0.0010    0.0013 ... and so on

所以fft的参数是mhb(t),但是你调用mhb(也是一个数组)的值,其值为t作为索引。

这会给你错误:

>> mhb(t)
Subscript indices must either be real positive integers or logicals.

所以你需要做一些事情:

mhb(1:length(t));

这样清楚了吗?