[Matlab] Disegnare sinc

minavagante1
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:
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
_luca.barletta
Il codice corretto è

x=[-20:0.01:+20];
xnulli=find(x == 0);
y=sin(pi*x)./(x*pi);
y(xnulli)=1;
plot(x,y)

minavagante1
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

_luca.barletta
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.

minavagante1
Quindi il ./ fa l'operazione, tralasciando però x=0? E' proprio il significato di ./??
Nella mia versione dove c'è l'errore?

_luca.barletta
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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.