因此,我得到了一个存在的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它告诉我这个错误:"Subscript索引必须是真正的正整数或逻辑。“我很确定这是正确的,除非我做了一些完全不正确的事情。任何帮助都将不胜感激。
发布于 2013-11-19 01:40:30
注意,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));事情清楚了吗?
https://stackoverflow.com/questions/20061371
复制相似问题