I need to analyze this data with an Fourier but it keeps giving me an error. Please help!!
senal=importdata('/Users/macbook/Desktop/Analisis_Movimiento/EEG/eeg.mat'); %importa contenido de la dirección
eeg=senal.data; %nombra como eeg los datos de la carpeta data de senal
chan=senal.chanlocs;%nombra como chan los datos de la carpeta chanlocs de senal
evento=senal.event;%nombra como evento los datos de la carpeta event de senal
clear senal% filtrando peak primeros datos
colini = 100;for i=1:colini eeg(:,i) = eeg(:,colini+1);end%%%%%%%%%%%centrado en cero %%%%%%%%
media=mean(eeg,2);%%calcula la media de las filas. Si escribo mean(senal) es lo mismo que mean(senal,1) calcula el promedio de la senal por columnas; si escribo mean(senal,2) calcula el promedio de cada fila.
for i=1:size(eeg,1); %%size(eeg,1) es el numero de filas de eeg (78)%%
cent(i,:)=eeg(i,:)-media(i,1); %%el centrado (cent) es una matriz de 1 a 78 que es igual a eeg de cada fila y le resto la media de cada fila%%%
end%%%%%Crear arreglos para localización de canales%%%
loc=char(chan.labels);%%Busca en la estructura de chan, las carpetas labels que da los nombres a los canales)
loc2=loc; %%crea copia de loc llamada loc2%%
for i=1:78; %%%para todas las filas%%%
for j= 1:5; %%%
loc2(i,j+3)=loc(i,j); end;end; %%Este "for" le da los nombres a los canales sacandolos de la carpeta labels
loc2(:,1:3)=0;clear chan mediafor i = 1:size(eeg,1); loc2(i,2) = 48 + mod(i,10); loc2(i,1) = 48 + floor(i/10);end %%este "for" da los números del 1 al 78 para cada canal para facilitar la comprensión
clear locloc2str = cellstr(loc2(:,4:8));n_event = (1:39)';%%%%referenciación mastoides%%%%(es la referencia utilizada usualmente en
%%%%electroencefalogramas)%%Obtiene datos de ambas apofisis mastoides (derecha e izquierda)
mast=[cent(66,:);cent(70,:)]; %al usar [] creo una matriz cuya primera fila es el canal 66, y su segunda fila es el canal 70 (todos los datos de la fila 66 y 70 de cent)%%
ref=mean(mast); %%crea la referencia con el promedio de la matriz mast
clear mast i j %%elimina mast i j
%%debemos a cada canal, referenciarlo a nuestra ref.
for i=1:size(cent,1); refcen(i,:)=ref(1,:);end %%Crea matriz de dimensiones correctas (78x775168 en este caso) para poder restar
centref=cent-refcen;clear refcen%%%%graficar muestras referenciadas%%%
%plot(centref(1,:)) %%grafica centref para canal 1
%hold on %mantiene grafico
%plot(centref(66,:),'r') %%en grafico anterior agrega señal de canal 66
%hold on
%plot(centref(70,:),'g') %%en grafico anterior agrega señal de canal 70
%%%Frecuencia de muestreo %%
fs=1024;%%%encontrar pulso de boton 2 tras secuencia 13 - 16 - 2%%
nevento = size(evento,2);%%%encontrar pulso de boton 2%%
for i=1:size(evento,2); %le pido que me de la cantidad de eventos totales de la estructura eventos (572)
tipo(1,i)=evento(1,i).type; %crea una matriz llamada tipo, en que cada columna (i) tendra el valor de cada estructura del evento y anotara el valor de type
latencia(1,i)=evento(1,i).latency;%crea una matriz latencia, en que cada columna(i) tendra el valor de cada estructura de latencia del evento
endevsel = [];evlat = [];esdlat = [];for i=1:size(tipo,2); %Crear if para detectar coordenadas 13 - 16 - 2)
if(tipo(i)==2 && tipo(i-1)==16 && tipo(i-2)==13); evsel = [evsel,i]; evlat = [evlat,evento(1,i).latency]; esdlat =[esdlat,evento(1,i).latency - evento(1,i-2).latency]; endend[dlatmax, idlatmax] = max(esdlat);nevsel = length(evsel);canalselect = [74]; % seleccion de canales a plotear
dtime = 300; % ventana de tiempo a graficar 300 mseg antes de evento 2
for c=1:length(canalselect) canal = canalselect(c); nt = size(centref,2); % plotear señal completa
figure; hold on; plot(1:nt,centref(canal,1:nt),'b-'); plot(evlat,centref(canal,floor(evlat)),'ro','MarkerSize',8); title(loc2str(canal)) xlabel('tiempo(s)') ylabel('amp') % grafica todos los intervalos en un solo plot superpuestos
figure hold on for i=1:nevsel lenx = floor(dtime); x = (0:lenx-1)/fs; % tiempo
endx = floor(evlat(i)); domx = endx-lenx+1:endx; y = centref(canal,domx); y = y - mean(y); plot(x,y,'b-') %title(n_event)
xlabel('tiempo(s)') ylabel('amp') end % grafica todos los intervalos
lenx = floor(dtime); x = (0:lenx-1)/1024; % tiempo yprom = zeros(size(x)); figure() hold on for i=1:nevsel endx = floor(evlat(i)); domx = endx-lenx+1:endx; y = centref(canal,domx); y = y - mean(y); subplot(8,5,i), plot(x,y,'b-'); xlabel('tiempo(s)') ylabel('amp') if (i == 3) title(loc2str(canal)) end yprom = yprom + y; end yprom = yprom/nevsel; % plotea promedio de todos los eventos en canal
figure plot(x,yprom,'b-'); title(loc2str(canal)) xlabel('tiempo(s)') ylabel('amp') %%%FFT de señal
for NFFT=2.^nextpow2(size(yprom)); Y=fft((yprom),NFFT)/(yprom); f==fs/2*linspace(0,1,NFFT/2+1); plot(f,2*abs(Y(1:NFFT/2+1))); title('FTP') xlabel('Frecuencia (Hz)') %%%Título del eje x
ylabel('|Y(f)|') %%%Título del eje y
end end
Best Answer