Costruzione di un'onda quadra tramite le sue componenti armoniche

Secondo il Teorema di Fourier, un segnale periodico può essere scomposto nella somma di segnali sinusoidali di frequenze multiple di quella del segnale periodico considerato. Queste componenti sinusoidali sono dette "armoniche". Nel corso di quest'esperienza, approssimeremo un segnale ad onda quadra attraverso le sue prime componenti armoniche, graficando l'andamento di ciascuna componente armonica e il segnale ottenuto dalla loro somma.

In questo tutorial utilizzeremo quanto appreso nel tutorial precedente riguardo alla rappresentazione di un segnale sinusoidale. Non entreremo quindi nel dettaglio di come costruire ciascun segnale; nel caso ti occorresse una spiegazione più precisa, ti rimando a quel tutorial.

  1. Realizzazione della tabella contenente i parametri caratteristici delle componenti armoniche

    Nella parte alta del foglio di calcolo, imposta una tabella come quella rappresentanta in figura:

    Qui potremo impostare e modificare i parametri caratteristici delle componenti sinusoidali del segnale che vogliamo rappresentare.

    Poiché in questo tutorial vogliamo rappresentare un'onda quadra di frequenza 5 Hz, nella riga delle frequenze andiamo a scrivere i multipli interi di questo valore. Invece di scrivere "a mano" i valori 5, 10, 15, 20, 25, però, conviene utilizzare delle formule per fare in modo che, una volta impostata la frequenza fondamentale, i suoi multipli vengano calcolati dal programma.

    Dopo aver scritto il valore 5 per la frequenza fondamentale nella cella B3, scrivi in C3 la formula indicata nella figura seguente:

    Ora, trascina la casella C3 verso destra:

    Quando, arrivato alla cella F3, rilascerai il pulsante del mouse, nelle celle B3:F3 compariranno i multipli della frequenza fondamentale:

    Come previsto, la formula è stata copiata tenendo fisso il riferimento alla frequenza fondamentale (cella B3) e variando il riferimento al numero di armonica (perché abbiamo usato un riferimento relativo). Guarda ad esempio il contenuto della cella D3 selezionando la cella e leggendo la formula che compare nella barra della formula:

    Per quanto riguarda i valori di ampiezza e fase, per ora copia i valori riportati in figura, che sono quelli da utilizzare per l'onda quadra. Più avanti capirai da dove derivano tali valori e inserirai la formula matematica per calcolarli automaticamente:

  2. Preparazione della colonna con i valori delle ascisse

    Come nel tutorial precedente, prima di creare la colonna con i valori delle ascisse (gli istanti di tempo, nel nostro caso), riserviamoci uno spazio in cui impostare l'intervallo di campionamento (ossia l'intervallo di tempo che intercorre tra un campione e il successivo).

    Possiamo farlo alla riga 6, lasciando così una riga vuota di separazione dalla tabella realizzata al punto precedente:

    Invece di scrivere "Intervallo di campionamento", abbiamo preferito utilizzare, per ragioni di spazio, il simbolo con cui viene di solito rappresentata questa grandezza, ossia TC . Per fare il pedice, apri il menu "Formato", seleziona la voce "Carattere..." e, nella finestra che si apre, nella scheda "Posizione carattere", seleziona "Pedice".

    Come nei due tutorial precedenti, elencheremo i valori dell'asse orizzontale (che chiamiamo asse t, visto che immaginiamo di rappresentare segnali che variano nel tempo) nella prima colonna del foglio di calcolo.

    Lascia ancora una riga vuota di separazione e scrivi una t (centrata ed in corsivo) nella cella A8.

    Ora dovresti essere in grado di riempire la colonna t partendo dal valore 0, fino al valore 1, con incrementi di 0,001 tra un valore e il successivo (ricordati di utilizzare una formula e di utilizzare, invece che il valore 0,001, un riferimento assoluto alla cella B6, che lo contiene).

  3. Calcolo dei punti delle componenti sinusoidali

    Nelle colonne dalla B alla F inseriamo le formule per realizzare, punto per punto, le componenti armoniche dell'onda quadra. In pratica, in ciascuna di queste colonne dobbiamo realizzare un segnale sinusoidale, proprio come abbiamo fatto nel tutorial precedente.

    Per ogni sinusoide, nella formula faremo riferimento alle tre celle che si trovano nella stessa colonna in alto, contenenti i valori di ampiezza, frequenza e fase.

    Osserva bene la formula inserita: rispetto al tutorial precedente in cui hai costruito un segnale sinusoidale, questa volta per l'ampiezza, la frequenza e la fase non abbiamo utilizzato un riferimento assoluto, ma una specie di riferimento "ibrido", per così dire "un po' relativo" e "un po' assoluto".

    Infatti, il riferimento alla cella contenente l'ampiezza, ad esempio, non è stato scritto come $B$2, bensì come B$2. Il simbolo $, cioè, è stato usato per "bloccare" soltanto il 2, ossia l'indice di riga, mentre l'indice di colonna è stato lasciato libero di variare.

    In questo modo, quando copieremo la cella B9 nelle celle C9:F9, ossia orizzontalmente, il riferimento si comporterà come un riferimento relativo. Infatti, quando si copia orizzontalmente, ciò che cambia in un riferimento relativo è l'indice di colonna, mentre resta fisso quello di riga. Scrivendo B$2, abbiamo permesso all'indice di colonna di cambiare (perché non è preceduto dal simbolo $).

    Quando invece copieremo trascinando la formula verticalmente, ossia nelle celle sottostanti la cella B9, il riferimento si comporterà come un riferimento assoluto. Infatti, quando si copia verticalmente, ciò che cambia in un riferimento relativo è l'indice di riga, mentre resta fisso quello di colonna. Ma scrivendo B$2, noi abbiamo impedito all'indice di riga di cambiare (in quanto è preceduto dal simbolo $).

    Oltre ai tre riferimenti alle celle in alto, nella formula c'è anche un riferimento alla colonna A, contenente gli istanti temporali. Nello specifico, alla cella A9. Questo riferimento deve comportarsi in maniera esattamente opposta ai tre appena trattati:

    • quando si copiano le formule orizzontalmente, esso non deve cambiare, poiché tutti i punti calcolati, ad esempio, alla riga 9, devono fare riferimento all'istante di tempo scritto nella cella A9;
    • quando si copiano le formule verticalmente, esso deve cambiare, poiché valori successivi della stessa sinusoide devono far riferimento ad istanti successivi di tempo (il valore in B9 deve fare riferimento ad A9, quello in B10 ad A10, quello in B11 ad A11, e così via).

    Per questo motivo, il riferimento ad A9 è stato scritto come $A9: l'indice di colonna risulta bloccato, mentre quello di riga può variare.

    Non ci resta, a questo punto, che copiare orizzontalmente la cella B9, trascinandola fino ad F9:

    Fatto ciò, devi copiare verticalmente. Seleziona le cinque celle da B9 a F9 e, dopo aver "afferrato" l'angolo in basso a destra della selezione, trascina verso il basso fino alla riga 1009 (oppure copia e incolla come hai imparato nel tutorial precedente):

  4. "Composizione" delle armoniche

    Al punto precedente abbiamo creato le armoniche che, sommate, approssimano il segnale che stiamo considerando (ossia l'onda quadra). Non ci resta che effettuare questa somma, istante per istante. Per ogni riga, cioè, dovremo calcolare la somma dei valori di tutte le componenti sinusoidali presenti sulla stessa riga.

    Per calcolare la somma corrispondente all'istante 0, nella cella G9 scrivi:

    (l'espressione B9:F9 significa: "dalla cella B9 alla cella F9", ossia "tutte le celle comprese tra la B9 e la F9")

    Copia la formula trascinandola fino alla cella G1009 e inserisci un'intestazione per la colonna, scrivendo "Somma" nella cella G8:

  5. Creazione dei grafici delle componenti armoniche

    Vogliamo realizzare due grafici, il primo con tutte le componenti armoniche, l'altro con il segnale ottenuto dalla loro somma (o composizione). Iniziamo con il primo.

    Conviene prima scrivere un'intestazione per ogni colonna alla riga 8, perché in questo modo Calc utilizzerà tale intestazione nella legenda del grafico:

    A questo punto, seleziona l'intervallo di celle A8:F1009, utilizzando il trascinamento con il mouse oppure con quest'altro metodo:

    1. seleziona la cella A8 cliccando su di essa,
    2. scorri il foglio verso il basso senza trascinare, cioè con il tasto del mouse rilasciato, fino alla riga 1009,
    3. premi il tasto MAIUSC sulla tastiera,
    4. clicca sulla cella F1009.

    Clicca sul pulsante "Grafico", oppure, se non è presente, clicca sulla voce "Grafico..." del menu "Inserisci".

    Si apre la finestra "Creazione guidata grafico". Effettua le selezioni indicate in figura.

    Al passo 2 della creazione guidata grafico controlla che sia spuntata la casella "Prima riga come didascalia".

    Continua a cliccare il pulsante "Avanti" fino ad arrivare al passo 4. Qui, nella casella "Titolo" scrivi "Grafici delle componenti armoniche" e clicca su "Fine".

    Ecco il grafico che dovresti aver ottenuto:

    Sistema il formato dei numeri scritti sull'asse t, come spiegato nel tutorial precedente, in modo che siano rappresentati con una sola cifra decimale.

    Nella stessa finestra utilizzata per sistemare il formato dei numeri dell'asse, seleziona la scheda scala e imposta manualmente il valore massimo a 1:

    Se hai fatto tutto correttamente, ora il grafico dovrebbe avere questo aspetto:

    Quelle che vedi - lo ripeto - sono le sinusoidi che, sommate, approssimano nel modo migliore l'andamento di un'onda quadra di ampiezza 1 e frequenza 5 Hz.

    Prima di passare al punto successivo, riposiziona il grafico trascinandolo dove preferisci.

  6. Creazione del grafico della somma delle componenti armoniche

    Avrai notato al punto precedente, che Calc è stato in grado di rilevare automaticamente quali dati utilizzare per l'asse orizzontale e quali per l'asse verticale.

    Per ottenere lo stesso risultato ora, dovremmo partire dalla selezione delle colonne A e G. Si può fare, ma preferiamo utilizzare un metodo diverso, che ci darà l'occasione per imparare ad indicare "manualmente" a Calc i dati da utilizzare per l'asse orizzontale.

    Allora, selezioniamo solo i dati della colonna G:

    Procedi quindi alla creazione del grafico cliccando sull'apposita icona e selezionando le stesse opzioni fino al passo 3.

    Al passo 3, come ci aspettavamo, mentre alla voce "Valori Y" sono presenti i dati che abbiamo selezionato prima di iniziare a creare il grafico (ossia l'intervallo di celle G9:G1009), la casella "Valori X" risulta vuota. Non ci resta altro da fare che indicare manualmente a Calc dove prendere i valori per l'asse orizzontale.

    Per ridurre al minimo il rischio di errori di copiatura, procedi così:

    • nella casella "Aree dati" seleziona "Valori Y";
    • copia il contenuto della casella "Area per Valori Y" (dovrebbe essere $Foglio1.$G$9:$G$1009, a meno che tu non abbia cambiato nome al foglio);
    • nella casella "Aree dati" seleziona "Valori X";
    • incolla ciò che hai copiato nella casella "Area per Valori X";
    • nella casella "Area per Valori X", modifica ciò che hai appena incollato sostituendo con una lettera A ciascuna delle due lettere G.

    A questo punto dovresti vedere questo:

    Abbiamo copiato, incollato e "adattato" un'espressione su cui vale la pena soffermarsi un momento per capire cosa c'è scritto:

    $Foglio1.$A$9:$A$1009

    Dovresti già essere in grado di capire la parte $A$9:$A$1009, che indica tutte le celle comprese tra la cella A9 e la cella A1009. Ciò che precede, ossia $Foglio1., sta ad indicare semplicemente che quella selezione di celle è presa dal Foglio1. E' semplicemente un modo più completo e meno ambiguo di indicare la selezione, dal momento che un analogo intervallo di celle A9:A1009 esiste anche negli altri fogli del file (Foglio2, Foglio3 e altri fogli eventualmente presenti).

    La sintassi utilizzata è importante, e la ricapitoliamo qui:

    • i "due punti", ossia il segno :, si usano per indicare un intervallo di celle, specificando la cella iniziale e quella finale dell'intervallo;
    • il "punto", ossia il segno ., si usa per separare l'indicazione del foglio da quella della selezione di celle all'interno di esso;
    • per quanto riguarda il segno $, sai già che serve a "bloccare" un riferimento di riga o di colonna; in questo caso la sua presenza è indifferente (prova a toglierlo, e vedrai che il grafico non cambierà).

    Clicca su "Avanti" e, al passo 4 della creazione guidata grafico, inserisci un titolo (ad esempio "Somma delle componenti sinusoidali") e togli la spunta dalla casella "Mostra legenda". Quindi clicca su "Fine".

    A questo punto, sistema l'asse x del grafico che hai ottenuto come hai fatto nei tutorial precedenti, cliccando con il tasto destro sull'asse, selezionando "Formato asse" ed impostando i valori più adeguati nelle schede "Scala" e "Numeri".

    Il grafico che hai creato dovrebbe apparire così:

    Come puoi notare, anche se il grafico assomiglia (vagamente) ad un'onda quadra, si può certamente fare di meglio nell'approssimarla:

    • i "ripple" nella parte che dovrebbe essere "piana", ad esempio, sono piuttosto pronunciati (zone indicate con la lettera "A" nella figura sotto);
    • analogamente, appare ancora troppo poco "ripida" la pendenza nei tratti di passaggio dalla semionda positiva a quella negativa e viceversa (zone "B" della figura sotto).
  7. Aggiunta di altre componenti armoniche

    L'onda quadra può essere approssimata in modo migliore tramite l'aggiunta di altre componenti armoniche. Iniziamo aggiungendone due.

    Come avrai notato, anche se non l'abbiamo detto esplicitamente, le componenti non nulle sono quelle dispari. Nel caso dell'onda quadra, infatti, quelle pari non danno alcun contributo (vedi le colonne C ed E).

    Se vogliamo aggiungere altre due componenti (sottinteso: non nulle), perciò, dovremo arrivare alla nona armonica.

    Per fare spazio alle armoniche che vogliamo aggiungere, clicca con il destro sull'intestazione della colonna G e, dal menu che si apre, seleziona "Inserisci colonne":

    Ripeti l'operazione per altre tre volte, fin quando la colonna "Somma" non si trovi alla colonna K. Quindi scrivi le intestazioni alla riga 8 delle colonne appena inserite. Ecco l'aspetto del foglio a questo punto:

    Ora dobbiamo compilare la tabella in alto con i valori corrispondenti alle nuove armoniche che vogliamo inserire. E' quindi il momento opportuno per inserire, nella riga 2 del foglio, la formula per il calcolo delle ampiezze al posto dei valori che all'inizio del tutorial abbiamo inserito "a mano".

    I numeri "misteriosi" che abbiamo inserito (ossia 1,273, 0,424, 0,255), derivano dalla seguente espressione, valida per la generica armonica n (per n dispari):

    Ricorda che la formula va applicata solo per n dispari, mentre l'ampiezza delle armoniche pari è nulla.

    Ora prova a calcolare l'espressione precedente per n=1, per n=3 e per n=5, e vedrai che otterrai proprio i tre valori 1,273, 0,424 e 0,255.

    Per far calcolare l'ampiezza delle armoniche a Calc, basta perciò inserire l'espressione precedente nella cella B2 e poi copiarla lungo la riga 2. Nella cella B2, quindi, scrivi:

    =4/(B1*PI.GRECO())

    Ora "afferra" l'angolo in basso a destra della cella e trascinala verso destra fino alla colonna J. C'è solo un problema: l'espressione, come abbiamo detto, vale solo per le armoniche dispari, quindi dovresti cancellare tutti i valori di ampiezza che, attraverso la formula, sono stati calcolati per le armoniche pari (ossia quelli nelle colonne C, E, G, I).

    C'è un modo più elegante di ottenere questo risultato, anche se richiede un piccolo sforzo per scrivere la formula. Useremo due funzioni che forse ti risultano nuove: la funzione SE e la funzione RESTO.

    La funzione SE

    Questa funzione riceve tre argomenti:

    SE ( test ; espressione1 ; espressione2 )

    dove:

    • test indica una condizione, che può essere vera oppure falsa;
    • espressione1 indica un'espressione, ossia un numero, una data, del testo, o anche un'espressione complessa formata da operandi, operatori e funzioni, che viene eseguita se la condizione test è vera;
    • espressione2 indica un'espressione che viene eseguita se la condizione test è falsa.

    Facciamo un esempio: supponiamo che la cella C4 contenga il voto di un tale studente in una tale materia. Allora, la seguente formula scritta ad esempio nella cella D4:

    = SE ( C4<6 ; "INSUFFICIENTE" ; "SUFFICIENTE" )

    scrive "INSUFFICIENTE" se il numero contenuto in C4 è minore di 6; altrimenti scrive "SUFFICIENTE".

    La funzione RESTO

    Questa funzione restituisce (cioè dà come risultato) il resto della divisione intera tra i due argomenti che le vengono passati. Ad esempio, il risultato dell'espressione

    RESTO ( 11 ; 3 )

    è pari a 2, perché 11/3 fa 3 con il resto di 2.

    Questa funzione, quindi, può essere utilizzata per capire se il contenuto di una certa cella è un numero pari oppure un numero dispari (purché sia un numero intero, ovviamente). Ad esempio:

    RESTO(B1;2)

    restituisce 0 se B1 è divisibile per 2, ossia se è pari; mentre restituisce 1 se B1 non è divisibile per 2, ossia è un numero dispari.

    In conclusione

    A questo punto, combinando le due funzioni appena presentate, possiamo calcolare il valore dell'ampiezza di ciascuna armonica discriminando i due casi di armoniche dispari (che hanno ampiezza non nulla) e di armoniche pari (che hanno ampiezza pari a zero). Ecco la formula che va scritta nella cella B2:

    =SE(RESTO(B1;2)=1; 4/(B1*PI.GRECO()); 0)

    Questa formula si legge così: se il resto della divisione tra B1, che contiene il numero dell'armonica, è pari ad 1, ossia se il numero dell'armonica è dispari, allora l'ampiezza è pari a 4/(B1*PI.GRECO()), altrimenti è pari a 0.

    Dopo aver copiato e incollato quella formula nelle celle dalla C2 alla J2, calcola i valori delle sinusoidi che abbiamo aggiunto, ossia riempi le colonne G, H, I, J fino alla riga 1009. A questo punto aggiorna la formula della colonna K per fare in modo che la somma sia calcolata su tutte le armoniche.

    Il grafico si aggiornerà automaticamente ed assumerà quest'aspetto:

    L'approssimazione dell'onda quadra è migliorata molto. Io ho provato a fare ancora meglio, aggiungendo armoniche fino alla venticinquesima!

    Ecco cosa ho ottenuto:

    ...Vuoi provarci anche tu?