Creare un simulatore OFDM

di il
9 risposte

Creare un simulatore OFDM

Salve, sono nuova del forum e da poco ho iniziato ad utilizzare matlab. Sono una studentessa laureanda in ingegneria informatica e dovrei utilizzare matlab per creare un simulatore di canale per reti underwater. Purtroppo non avendo mai utilizzato matlab non so proprio come muovermi, perciò vorrei sapere a grandi linee come fare. Il prof mi ha detto espressamente che non posso utilizzare simulink, ma che ddevo utilizzare gli m-files e creare il sistema a blocchi, quali sono i passi per realizzare un sistema del genere?!
Vi prego aiutatemi.. Grazieeee

9 Risposte

  • Re: Creare un simulatore OFDM

    Io non conosco l'argomento, ma se spieghi di cosa si tratta, o meglio, se dai un idea ad alto livello di quello che devi fare, dei blocchi che compongono il tuo sistema e di quello che ciascun blocco deve fare, possiamo arrivare ad impostare il problema.
    Comincia dal blocco che ti sembra più semplice.
  • Re: Creare un simulatore OFDM

    Allora devo creare un sistema di trasmissione e ricezione basato su OFDM. Cominciamo dal trasmettitore, ecco i blocchi:
    sorgente --> codifica del segnale A/D --> S/P--> produrre n campioni--> invio

    allora la sorgente deve creare un segnale analogico da trasmette, quindi una sinusoide
    il codificatore deve campionare il segnale utilizzando una tecnica numerica, tipo PSK, QAM o altro (preferirei PSK)
    S/P trasforma il segnale da serie in parallelo
    produrre n campioni: Con la IFFT bigogna produrre m campioni ed inviarli sulle N portanti OFDM.
    Poiché non ho mai utilizzato matlab, vorrei sapere come fare, devo programmare dei diversi "blocchi", ognuno in un fuction diversa?! Se riesco a capire il meccanismo, riuscirò a fare anche il ricevitore, o lo posto più in la!!
  • Re: Creare un simulatore OFDM

    Allora, il numero di funzioni dipende da te, puoi anche scrivere tutto su un unico file. Forse l'uso delle funzioni, in questo caso, può rendere il codice un pò più leggibile.
    Quindi, potrai avere una funzione per ciascun blocco.
    Ora ti conviene cominciare ad approfondire un blocco per volta e capire quali dovranno essere gli ingressi e uscite di ciascuna funzione e cosa la funzione deve fare nel dettaglio in modo da capire se ad esempio esiste una funzione di matlab che fa direttamente quello che chiedi o se dovrai scomporre il problema in più passaggi ad un livello più basso.
    Ad esempio, vai sull'help di matlab e cerca psk. Molti risultati faranno riferimento a blocchi simulink, altri saranno funzioni. Scorri i risultati e guarda se c'è qualcosa che fa quello che vorresti. In fondo alla pagina dell'help troverai degli esempi, che ti aiuteranno a capire come creare il segnale in ingresso. In particolare, il segnale di ingresso non potrà essere analogico, ma sarà costituito da un vettore con tantissimi punti.
  • Re: Creare un simulatore OFDM

    Ad esempio posso creare un fuction che mi crea un segnale sinusoidale, e poi darlo in ingresso ad una fuction che mi genera il segnale PSK, ad esempio dando in in ingresso il periodo T di campionamento ed in uscita il vettore con la sequenza di scalari?!
  • Re: Creare un simulatore OFDM

    Il tuo file principale sarà composto da una serie di chiamate a funzioni.
    ingresso1=?!?!;
    ingresso2=?!?!;
    segnale=funzione_che_crea_il_segnale(ingresso1, ingresso2);
    segnale_campionato=funzione_PSK(segnale,altri_parametri);

    questo sarà salvato in un file (ad esempio main.m)

    Poi avrai altri due file che contengono le funzioni.
    Ricorda sempre che il nome del file che contiene la funzione deve avere lo stesso nome della funzione stessa. In questo caso avrai un primo file che si chiamerà funzione_che_crea_il_segnale.m che conterrà il codice della funzione:
    function [segnale]=funzione_che_crea_il_segnale(ingresso1, ingresso2)
    //codice per creare il segnale

    Il secondo file si chiamerà funzione_PSK.m e così via.

    Ovviamente, se il segnale di ingresso ha una "forma" che è già prevista tra le funzioni di matlab, ad esempio se è un semplice coseno, non avrai bisogno di fare una funzione tua, ma userai direttamente quella di matlab.
    Quindi il tuo main sarà così:
    x=?!?!;
    segnale=cos(x);
    segnale_campionato=funzione_PSK(segnale,altri_parametri);

    Magari, se proprio non hai mai aperto matlab, comincia con un esercizio più semplice che ti permetta di cominciare a prendere confidenza con le funzioni.
  • Re: Creare un simulatore OFDM

    Purtroppo non ho molto tempo.. Cmq grazie per il consiglio.. Inizio a progettare per bene i blocchi e nel frattempo cerco di spratichirmi un po' di più con matlab
  • Re: Creare un simulatore OFDM

    Poiché ho a disposizione pochissimo tempo, ho deciso di partire da un simulatore già esistente, trovato a questo link http://www.mathworks.com/matlabcentral/fileexchange/33177-ofdm-system/content/pure_OFDM.m e proverò a modificarlo magari a renderlo più bello..
    Se potete dare un'occhiata vorrei farvi già alcune domande..
    Poiché questo è fatto in un unico file, secondo voi per renderlo "più elegante" sarebbe meglio dividerlo in più file, e poi mettendole insieme in un main?! O sarebbe soltanto "tempo sprecato"?!
    Inoltre il mio prof mi diceva che era possibile "disegnare il sistema a blocchi" ma si può davvero fare in matlab?! O devo utilizzare un altro programma di design, tipo Dia?!

    Nb: può darsi che le mie domande siano un po' "sconclusionate", però continuo a ribadire la mia ignoranza in materia, e che, purtroppo per mancanza di tempo non ho modo di approfondire tutti gli aspetti di matlab (almeno per il momento)

    GRAZIEEEEEEEEEEEEEEEEEEEEEE
  • Re: Creare un simulatore OFDM

    Il codice mi sembra già abbastanza snello, quindi non lo suddividerei.
    I blocchi su matlab li puoi disegnare con simulink, ma all'inizio hai detto che non lo potevi usare quindi non so il tuo prof cosa intende.
    Volendo comunque puoi andare a cercare nella libreria di simulink le funzioni corrispondenti a quelle utilizzate in quel codice.
  • Re: Creare un simulatore OFDM

    Purtroppo avendo poco tempo e non conoscendo a fondo matlab, ho deciso di utilizzare questo modello: http://www.mathworks.com/matlabcentral/fileexchange/28369-ofdm-signal-generation-transmission-and-reception-in-a-noisy-channel/content/fullofdm.m in questo modo parto da già da una buona base per ciò che mi serve:
    1. modello di trasmettitore e ricevitore.
    2. canale soggetto a multipath

    Poiché questo modello introduce anche il rumore (che a me serviva ovviamente), mi resta da aggiungere solo il fenomeno della distorsione Doppler (ovvero uno spostamento di frequenza dell'onda originale) qualcuno di voi mi potrebbe suggerire come modificare il suddetto codice?! Ovviamente in ricezione devo poi calcolarmi dei parametri che siano in grado di togliere questo disturbo.
    Cmq iniziamo dall'inizio ... Come introduco il fenomeno della distorsione Doppler?!

    PS: ho risolto anche il problema dei blocchi.. Come era stato suggerito in precedenza essi si utilizzano con simulink e non con la "matlab puro".
    Vi chiedo ancora scusa se a volte sono confusionaria ma sono i primi approcci con questo programma. Grazie a tuttiiiiii
Devi accedere o registrarti per scrivere nel forum
9 risposte