所以我有一个现有的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
它告诉我这个错误:"下标索引必须是真正的正整数或逻辑。"我非常确定这是正确的,除非我做的事情完全不正确。任何帮助将不胜感激。
答案 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));
这样清楚了吗?