[Matlab] Disegnare sinc
Ciao a tutti,
ho un semplice problema in matlab: dovrei disegnare il grafico della funzione $sinc(x)=frac{sin(pi*x)}{pi*x}$.
Innanzittutto creo il vettore di elementi x, poi cerco gli indici delle x dove il denominatore è zero e pongo il risultato = 1, e per gli altri indici applico la formula del sinc, ma alla fine di tutto mi risulta un vettore di elementi costanti, tranne quello che pongo a 1, non capisco il perchè
Il codice è questo:
cosa sbaglio??
Grazie a tutti
ho un semplice problema in matlab: dovrei disegnare il grafico della funzione $sinc(x)=frac{sin(pi*x)}{pi*x}$.
Innanzittutto creo il vettore di elementi x, poi cerco gli indici delle x dove il denominatore è zero e pongo il risultato = 1, e per gli altri indici applico la formula del sinc, ma alla fine di tutto mi risulta un vettore di elementi costanti, tranne quello che pongo a 1, non capisco il perchè

Il codice è questo:
x=[-20:0.01:+20] xnulli=find(x == 0) xnonnulli=fins(x ~= 0) y(nulli)=1 y(nonnulli)=sin(pi*x)/(x*pi)
cosa sbaglio??
Grazie a tutti
Risposte
Il codice corretto è
x=[-20:0.01:+20]; xnulli=find(x == 0); y=sin(pi*x)./(x*pi); y(xnulli)=1; plot(x,y)
Sono su un pc dove non ho matlab lo proverò più tardi ma posso chiederti una cosa?
Allora generi il vettore x, trovi gli indici dei soli x che valgono 0 (che in questo caso sarà solo uno 0), e poi scrivi la funzione della y ma senza impostare qualcosa sugli x nulli, oppure quel puntino che hai inserito ignifica qualcosa di particolare???
Inoltre, dov'è che sbaglio nel mio codice??
Grazie
Allora generi il vettore x, trovi gli indici dei soli x che valgono 0 (che in questo caso sarà solo uno 0), e poi scrivi la funzione della y ma senza impostare qualcosa sugli x nulli, oppure quel puntino che hai inserito ignifica qualcosa di particolare???
Inoltre, dov'è che sbaglio nel mio codice??
Grazie
Calcolo i valori di y ignorando per un istante x=0: poiché x è un vettore la divisione deve avvenire elemento per elemento, da qui l'utilizzo dell'operatore ./
Dopodiché pongo a 1 il valore di y per x=0.
Dopodiché pongo a 1 il valore di y per x=0.
Quindi il ./ fa l'operazione, tralasciando però x=0? E' proprio il significato di ./??
Nella mia versione dove c'è l'errore?
Nella mia versione dove c'è l'errore?
No, l'operatore ./ prende dentro tutti i valori di x. E' nell'istruzione successiva che metto a posto il valore di y per x=0.
Nella tua versione l'errore è proprio quello di non usare il ./ che fa la divisione elemento per elemento. Nonostante ciò nel tuo codice non è sufficiente sostituire il / con il ./ perché l'ultimo assegnamento sarebbe tra vettori di lunghezza diversa.
Nella tua versione l'errore è proprio quello di non usare il ./ che fa la divisione elemento per elemento. Nonostante ciò nel tuo codice non è sufficiente sostituire il / con il ./ perché l'ultimo assegnamento sarebbe tra vettori di lunghezza diversa.