Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Chiarimenti analisi spettrale Matlab di un segnale

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[1] Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto UtenteVibia » 5 gen 2016, 14:19

Buongiorno,

Volevo sottoporvi ad un dubbio che mi è venuto mentre facevo l'analisi spettrale di un segnale acquisito durante delle prove in laboratorio.
Premetto che necessito di questa analisi spettrale per valutare le componenti armoniche introdotte da un chopper step-up al variare del duty-cicle
Di seguito ho realizzato questo codice

Codice: Seleziona tutto

i_in_k    = 2*fft(i_in)/N;        %Trasformata di Fourier (N numero di campioni)

h=length(i_in_k);                    %calcolo il numero armoniche
if h>=30
    h=15;
else
    h=round(h/2);
end

figure(1)
subplot(2,1,1)
plot(t,i_in,'LineWidth',1)
title('Andamento i_i_n')
ylabel('i_i_n [A]')
xlabel('t [sec]')
grid
subplot(2,1,2)
bar(abs(i_in_k(1:h)))    %plot delle prime 15 armoniche
title('Spettro Armonico')
ylabel('Armoniche i_i_n [%]')
xlabel('indice armonico k')
grid


Ho dei dubbi in merito alla corretta realizzazione dell'analisi spettrale e la validità dei risultati ottenuti che però a me sembrano validi perché eseguendo lo script da me creato riesco a vedere i risultati attesi ovvero in un caso vengono introdotte un numero elevato di armoniche mentre in un altro di meno.

Il dubbio nasce dal fatto che ho trovato script in rete in cui viene elimitata la componente continua ad esempio così:
Codice: Seleziona tutto
i_in_k0 = i_in_k(1)/2;            %componente continua (valor medio della I)
i_in_k(1) = [];                       %tolgo il valor medio dal vettore i_in_k
i_in_fond = i_in_k(1);
i_in_kk    = 100*i_in_k/i_in_fond;     %adimensionalizzo rispetto all'armonica fondamentale

ma i risultati poi cambiano radicalmente :shock:
Avatar utente
Foto UtenteVibia
101 2 7
Frequentatore
Frequentatore
 
Messaggi: 216
Iscritto il: 12 feb 2013, 22:53

1
voti

[2] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto Utentedimaios » 8 gen 2016, 10:40

Innanzitutto dovresti pubblicare le due serie di dati in formato testo ( magari compresso con uno zip ) per consentire le dovute verifiche.
Lo script che hai scaricato in rete si propone un altro tipo di rappresentazione, se non viene fornito il contesto completo non si capisce lo scopo del codice.
Inoltre non vedo finestrature prima della FFT e questo ..... non va bene! [-X
Avatar utente
Foto Utentedimaios
28,7k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3202
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

1
voti

[3] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto UtenteSandroCalligaro » 8 gen 2016, 10:49

Dimaios,
perché ci dovrebbero essere delle finestrature? Se l'intento è quello di analizzare l'intero segnale...

Riguardo all'eliminazione della continua e alla normalizzazione rispetto alla fondamentale, probabilmente l'intento, in quel caso, era di valutare aspetti relativi alla distorsione armonica.
Avatar utente
Foto UtenteSandroCalligaro
1.911 4 4
Expert EY
Expert EY
 
Messaggi: 829
Iscritto il: 6 ago 2015, 19:25

1
voti

[4] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto Utentedimaios » 8 gen 2016, 13:24

perché un segnale generico non deve essere finestrato con un rect(\cdot) altrimenti lo spettro del medesimo subisce la convoluzione in frequenza con un sinc(\cdot) e le armoniche vengono rappresentate con dei "lobi allargati". Se due frequenze sono molto vicine si rischia di confonderle e non rilevarle.
Di seguito un esempio di spettro stimato con finestrature e tecniche diverse.
Il segnale ideale da stimare è quello tratteggiato.

I primi due sono con e senza finestratura, il terzo con una tecnica molto più potente della FFT "forza bruta".

Windowing.png
Windowing.png (18.75 KiB) Osservato 2280 volte
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
28,7k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3202
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[5] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto UtenteSandroCalligaro » 10 gen 2016, 10:55

perché un segnale generico non deve essere finestrato con un rect(\cdot) altrimenti lo spettro del medesimo subisce la convoluzione in frequenza con un sinc(\cdot)

(scusatemi se dico un'ovvietà) Il fatto che armoniche vicine non siano perfettamente riconoscibili non è evitabile di per sè, è una conseguenza del fatto che l'analisi è effettuata su un segnale di lunghezza finita (indeterminazione).
La finestratura distorce il segnale (sicuramente la continua). Se è necessaria (come negli analizzatori di spettro), è sicuramente il male minore, ma su altri tipi di misure sarei più cauto. Di solito, per segnali acquisiti ad esempio con l'oscilloscopio, è possibile avere un numero di campioni alto, che riduce il problema.

Ripensandoci, però, siccome a Vibia interessano probabilmente più che altro i rapporti tra le ampiezze, forse la finestratura non introdurrebbe inconvenienti particolari, e migliorerebbe la discriminazione tra le armoniche.
Pensandoci ancora meglio, se a Vibia interessano le armoniche della frequenza di switching, avrebbe senz'altro senso tagliare la durata del segnale ad un multiplo del periodo di switching (è la cosa più semplice, ma ci ho pensato solo ora). In ogni caso sarebbe bene avere un'acquisizione che comprenda un numero alto di periodi.

il terzo con una tecnica molto più potente della FFT "forza bruta"

Per curiosità, di che tecnica si tratta?
Avatar utente
Foto UtenteSandroCalligaro
1.911 4 4
Expert EY
Expert EY
 
Messaggi: 829
Iscritto il: 6 ago 2015, 19:25

1
voti

[6] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto Utentedimaios » 10 gen 2016, 23:47

1. Il fatto che le ampiezze delle sinusoidi siano calcolate in modo corretto dipende anche dalla finestratura. Per esempio, se non sai molto del segnale in ingresso ( posizionamento delle sinusoidi in frequenza ), la flat top window è spesso impiegata.
E' chiaro che avendo un numero di campioni elevatissimo sei avvantaggiato ma questo non capita sempre soprattutto per le analisi in tempo reale nelle quali è la variazione dell'ampiezza e fase dei vari picchi spettrali che fornisce l'informazione del processo.


2.
SandroCalligaro ha scritto:Per curiosità, di che tecnica si tratta?


Se sai esattamente le frequenze che vai ad identificare e ti interessa la stima dell'ampiezza il filtro di Kalman è un mezzo molto potente.
Se ti interessa stimare contemporaneamente anche la frequenza dovresti usare il filtro di Kalman esteso EKF ( non è semplicissimo ma si fa ).

A parte qualche algoritmo veramente specifico per le sinusoidi direi che una delle tecniche migliori di stima non model based sia sicuramente APES ( amplitude and phase esthimation ) .

Anche MUSIC ( multiple signal classification ) ed il metodo di Capon sono potenti ma APES ha caratteristiche statistiche molto interessanti. Fondamentalmente risulta preciso e converge senza "troppi problemi".

Il principio base è comunque il seguente ; se hai un buon modello del segnale in ingresso, perché ne conosci le caratteristiche, una qualsiasi tecnica di identificazione model-based porterà ad un risultato decente. Se invece non conosci le caratteristiche del segnale ti arrangi con stime realtime oppure come fanno molti usi la FFT forza bruta rischiando di non ottenere dall'analisi del segnale tutte le informazioni che potresti ricavare.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
28,7k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3202
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[7] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto UtenteVibia » 11 gen 2016, 11:37

Ti ringrazio per la risposta, adesso rispondo punto per punto :D

dimaios ha scritto:Innanzitutto dovresti pubblicare le due serie di dati in formato testo ( magari compresso con uno zip ) per consentire le dovute verifiche.

Adesso provvedo subito ad allegare i file, nel caso posso allegare l'intera acquisizione dati?
Lo script che hai scaricato in rete si propone un altro tipo di rappresentazione, se non viene fornito il contesto completo non si capisce lo scopo del codice.
Inoltre non vedo finestrature prima della FFT e questo ..... non va bene! [-X


In realtà, lo script l'ho scritto io ma è frutto di varie ricerche fatte sull'help di matlab.
Il contesto dell'applicazione è il seguente: ho diverse acquisizioni, fatte in laboratorio, di un circuito step-up e step-down e devo fare l'analisi spettrale della corrente in ingresso e della tensione sul carico per ogni acquisizione fatta che corrisponde a diverse impostazioni dei parametri dei dispositivi utilizzati.
L'analisi spettrale mi serve per valutare quale delle varie configurazioni introduce meno armoniche in rete o sul carico (infatti credo che debba calcolarmi anche il thd per fornire una stima anche numerica).

Detto ciò, purtroppo mi trovo un po spiazzato in quanto è la prima volta che mi cimento in questa serie di applicazioni che ho visto molto grossolanamente a livello teorico. Quindi, mi servirebbe qualcosa per poter imparare a fare questo tipo di operazioni.
Avatar utente
Foto UtenteVibia
101 2 7
Frequentatore
Frequentatore
 
Messaggi: 216
Iscritto il: 12 feb 2013, 22:53

0
voti

[8] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto Utentedimaios » 11 gen 2016, 12:40

Ricordati di dare tutti i dati come la frequenza di switching ed il periodo di campionamento dei segnali che vuoi analizzare altrimenti non si possono fare i calcoli correttamente.
In pratica sarebbe opportuno avere lo schema elettrico e la forma d'onda del segnale digitale che pilota il funzionamento ON e OFF del circuito.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
28,7k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3202
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[9] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto UtenteVibia » 11 gen 2016, 17:02

dimaios ha scritto:Ricordati di dare tutti i dati come la frequenza di switching ed il periodo di campionamento dei segnali che vuoi analizzare altrimenti non si possono fare i calcoli correttamente.
In pratica sarebbe opportuno avere lo schema elettrico e la forma d'onda del segnale digitale che pilota il funzionamento ON e OFF del circuito.


Certamente, per l'acquisizione con stepdown fatta con
freq_camp = 50000Hz
freq_segnale = 25000Hz
- la forma d'onda del segnale digitale che pilota il funzionamento ON e OFF del circuito purtroppo non mi è stata fornita
- lo schema elettrico in esame l'ho allegato e le grandezze dei componenti
Induttore d’ingresso con induttanza pari a 5 mH.
Condensatore d'uscita, con capacità pari a 3300 μF.
Allegati
stdw circuit.jpg
Avatar utente
Foto UtenteVibia
101 2 7
Frequentatore
Frequentatore
 
Messaggi: 216
Iscritto il: 12 feb 2013, 22:53

0
voti

[10] Re: Chiarimenti analisi spettrale Matlab di un segnale

Messaggioda Foto UtenteSandroCalligaro » 11 gen 2016, 17:29

freq_camp = 50000Hz
freq_segnale = 25000Hz


C'è qualcosa che non mi torna:
Come fai a valutare in modo corretto le armoniche (che sono attorno alla frequenza di switching, quindi anche più in alto) campionando a 2x la frequenza di switching?
Avatar utente
Foto UtenteSandroCalligaro
1.911 4 4
Expert EY
Expert EY
 
Messaggi: 829
Iscritto il: 6 ago 2015, 19:25

Prossimo

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite