2013-11-19 2 views
1

Итак, у меня есть существующий ekg-сигнал, который я должен взять, чтобы получить преобразование Фурье и построить фазу (угол) и величину. Мой код выглядит следующим образом:Построение фазы и величины преобразования Фурье сигнала 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

Также см. [Этот вопрос] (http://stackoverflow.com/questions/20054047/subscript-indices-must-either-be-real-positive-integers-or-logicals-generic-sol) для [общего решение этой проблемы] (http://stackoverflow.com/a/20054048/983722). –

ответ

0

Обратите внимание, что т вещественно массив со значениями (позволяет смотреть на первые несколько):

>> t(1:10) 

ans = 

    0.0003 0.0005 0.0008 0.0010 0.0013 ... and so on 

Так аргумент вашего FFT являются МАМИ (т), но вы вызываете значение МОВ (также массив) со значениями t как индексы.

Это дает ошибку:

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

Так что вам нужно сделать что-то вроде:

mhb(1:length(t)); 

ли, что четкие вещи?

+0

Ах да, это имеет смысл. Спасибо, проясняет эту ошибку :) –

+0

Это теоретически имеет смысл, однако по какой-то причине не генерирует никаких сигналов. Синтаксис отключен. Может быть другая встроенная функция вместо длины –

+0

Я бы вернулся и проверил ваш сигнал, чтобы убедиться, что вы FFT'ируете то, что считаете себя, просто проверьте все свои входы. Кроме того, может быть какое-то другое отображение из ваших значений t в индексы массива mhb, которые могут быть немного более сложными, хотя из вашей настройки не ясно, что это может быть. Я думаю, что исходная проблема, о которой вы просили, все же решена. –

Смежные вопросы