Filtraggio dati

di Anonimizzato17945 il
7 risposte
Ho delle sinusoidi che dovrei filtrare attaverso matlab. Qual'è l'istruzione più giusta da utilizzare.

7 Risposte

  • Quale tipo di filtro vuoi usare?
  • Vorrei utilizzare un filtro passa basso. Io ho delle frequenza che vanno da 0.5mhz a 20 mhz. Avevo pensato ad utilizzare l'istruzione butter per determinare i parametri e successivamente a filter
  • Hai determinato il tipo di filtro, non capisco quale sia la domanda.
    E' difficile rispondere a domande del tipo "quale funzione è meglio usare" ecc., non conoscendo il contesto e quello che si vuole ottenere.

    Comunque, hai individuato un tipo di filtro ecc.

    Hai provato ad implementarlo?
    Conosci il risultato che ti aspetti di ottenere (cioè, sei in grado di capire se il risultato che ottieni è giusto o, almeno, ragionevole)?
    Hai ottenuto il risultato che ti aspettavi?

    Dalla risposta a queste domande, dovresti capire se la scelta che hai fatto è quella giusta o, in caso contrario, desumere delle indicazioni su come procedere.

    Hope this helps.
  • Purtroppo non riesco a capire come funziona butter in quanto non riesco a capire come debba essere calcolato il parametro wn.
  • In base alla documentazione di MatLab (http://uk.mathworks.com/help/signal/ref/butter.html#inputarg_Wn):
    Wn — Cutoff frequency
    scalar | two-element vector
    Cutoff frequency, specified as a scalar or a two-element vector. The cutoff frequency is the frequency at which the magnitude response of the filter is 1 / v2.

    If Wn is scalar, then butter designs a lowpass or highpass filter with cutoff frequency Wn.
    If Wn is the two-element vector [w1 w2], where w1 < w2, then butter designs a bandpass or bandstop filter with lower cutoff frequency w1 and higher cutoff frequency w2.
    For digital filters, the cutoff frequencies must lie between 0 and 1, where 1 corresponds to the Nyquist rate—half the sample rate or p rad/sample.
    For analog filters, the cutoff frequencies must be expressed in radians per second and can take on any positive value.
    Data Types: double
    Sempre nella stessa pagina puoi trovare diversi esempi e spiegazioni.

    Hope this helps.
  • Altra domanda vorrei sapere la corretta sintassi per trovare l'elemento max di una certa colonna di un determinato vettore, che va dall'indice x all'indice y come possibile fare ciò. Da premettere che so il valore di x ma non so il valore di y perchè deriva dalla somma di x+un altro numero.
  • Per accedere ad una sezione di un vettore devi usare due indici:
    vettore(ind_inizio:idx_fine)
    Se conosci il primo (come nel caso della domanda), il secondo sarà quindi
    idx_fine=x+k
    
    il che corrisponde a quanto hai scritto nella domanda (somma di x+un altro numero).

    Nell'esempio che segue, vengono calcolati i valori massimi di 4 sezioni di un vettore: definito x il "punto di partenza, il valore dell'indice-fine viene definito a partire da 4 numeri random.
    % Creazione di un vettore di esempio
    vett=randi(500,13)
    % Impostazione del valore di "x"
    x=3;
    % Definizione di una serie (4) di valori di y (compresi tra il valore di
    % "x" ed il numero delle righe della matrice di esempio
    y=randi([0 length(vett)-3],4,1)
    % Inizializazine del vettore di output
    the_max=nan(length(y),1);
    % Loop per la ricerca del valore massimo
    for i=1:length(y)
       the_max(i)=max(vett(x:y(i)+3))
    end
    
    
    Hope this helps.
Devi accedere o registrarti per scrivere nel forum
7 risposte