Matlab analisi FFT

di il
1 risposte

Matlab analisi FFT

Salve a tutti,
ho provato a scrivere uno script di matlab che:

1) acquisisce 4 file .txt : sono elenchi di valori dai quali voglio ottenere vettori riga in matlab;
2) esegue l'anali in frequenza con la FFT dei 4 vettori;
3) calcola modulo e fase;
4) assembla la matrice F avente 2 righe (i vettori modulo la 1 e i vettori fase la 2);
5) calcola le densità medie (pesate con la lunghezza del percorso nei vari materiali) dei 4 percorsi e costituisce la matrice riga P delle densità medie;
6) cerca l'indice di correlazione tra F e P.[/list][/list]


Eccolo:

clear all
close all
%Segnali simulati: analisi in frequenza e coefficiente di correlazione con
%la densità media del percorso

l=0.38
pt=1750
pm=1800
pa=1.1839
u1=load('out1prova.txt')
u2=load('out2prova.txt')
u3=load('out3prova.txt')
u4=load('out4prova.txt')
a1=fft(u1)
a2=fft(u2)
a3=fft(u3)
a4=fft(u4)
Ma1=abs(a1)
Ma2=abs(a2)
Ma3=abs(a3)
Ma4=abs(a4)
Aa1=angle(a1)
Aa2=angle(a2)
Aa3=angle(a3)
Aa4=angle(a4)
F=[Ma1 Ma2 Ma3 Ma4;Aa1 Aa2 Aa3 Aa4]
p1=pt
p2=pm
p3=(pt*0.36+pm*0.02)/l
p4=(pt*0.24+pa*0.14)/l
P=[p1 p2 p3 p4]
for i=1:2
corr(F(i,:),P)
end

so che avrei, innanzitutto, dovuto fare dei cicli for le varie istruzioni.....ci ho provato, ma per ora non ci sono riuscito....
Eseguendo il file, il risultato è pessimo; mi da una serie di "NaN" (operazione impossibile, mi sembra).

....qualche suggerimento

1 Risposte

  • Re: Matlab analisi FFT

    Prova a mettere il contenuto ( o una parte) di uno dei file txt in modo che si possa provare il codice con gli ingressi giusti e riprodurre i tuoi risultati.

    Per quanto riguarda il ciclo è abbastanza semplice. Devi fare 4 iterazioni.
    L'unica complicazione potrebbe essere il costruire il nome del file per cui devi concatenare più stringhe;
    nomefile=strcat('out',num2str(i),'prova.txt')
    con i che varia da 1 a 4 ottieni tutti i nomi dei file.
    Quindi il ciclo for:
    for i=1:4
    nomefile=strcat('out',num2str(i),'prova.txt');
    u=load(nomefile);
    a=fft(u);
    Ma(i,:)=---
    Aa(i,:)=---
    end
    F=[Ma;Aa]
    ---

    L'indicizzazione di Ma e Aa fatta in questo modo funziona solo se i 4 Ma e Aa hanno tutti la stessa lunghezza, altrimenti bisogna salvarli in una struttura.
Devi accedere o registrarti per scrivere nel forum
1 risposte