[MatLab] Onda Quadra
Ciao a tutti!
Volevo sapere perché questo programma
function x=ondaQuadra(A,Toss,f,fc)
t=linspace(0,Toss,round(Toss*fc)); % vettore dei tempi
A=1; % valore del primo campione
count=0;
for i=1:length(t),
if count
count=count+1; % costante il campione corrente
else
count=0; % Ogni mezzo ciclo si inverte
A=-A; % l’ampiezza
end
x(i)=A;
end
plot(t,x);
mi dà il seguente errore, mi dice che non è definito Toss. Se provo a definirlo io così:
f = 1
fc = 10
e Toss = 1/fc
non mi dà più l'errore ma non mi plotta più "nulla" (il grafico è completamente bianco), dove sbaglio?
Grazie!
Volevo sapere perché questo programma
function x=ondaQuadra(A,Toss,f,fc)
t=linspace(0,Toss,round(Toss*fc)); % vettore dei tempi
A=1; % valore del primo campione
count=0;
for i=1:length(t),
if count
else
count=0; % Ogni mezzo ciclo si inverte
A=-A; % l’ampiezza
end
x(i)=A;
end
plot(t,x);
mi dà il seguente errore, mi dice che non è definito Toss. Se provo a definirlo io così:
f = 1
fc = 10
e Toss = 1/fc
non mi dà più l'errore ma non mi plotta più "nulla" (il grafico è completamente bianco), dove sbaglio?
Grazie!
Risposte
Il codice dei programmi mettilo tra i tag "code" così è più leggibile
Allora:
1. Perché dai A come argomento della funzione se poi lo poni tu A=1 ?
2. Toss è una variabile, non è una keyword di matlab, quindi devi definirla tu.
3. Se $Toss = 1/fc$ allora $round(Toss*fc)$ è uguale a 1, e ciò significa che il tuo linspace va da 0 a 1 ed ha 1 solo elemento
Per capire gli errori togli i $;$ e lancia il programma
1. Perché dai A come argomento della funzione se poi lo poni tu A=1 ?
2. Toss è una variabile, non è una keyword di matlab, quindi devi definirla tu.
3. Se $Toss = 1/fc$ allora $round(Toss*fc)$ è uguale a 1, e ciò significa che il tuo linspace va da 0 a 1 ed ha 1 solo elemento
Per capire gli errori togli i $;$ e lancia il programma

"raff5184":
Il codice dei programmi mettilo tra i tag "code" così è più leggibile
C'erano, ma non se li è presi

"raff5184":
Allora:
1. Perché dai A come argomento della funzione se poi lo poni tu A=1 ?
2. Toss è una variabile, non è una keyword di matlab, quindi devi definirla tu.
3. Se $Toss = 1/fc$ allora $round(Toss*fc)$ è uguale a 1, e ciò significa che il tuo linspace va da 0 a 1 ed ha 1 solo elemento
Per capire gli errori togli i $;$ e lancia il programma
Non definisco più A e Toss e mi dà il seguente errore...
Dice sempre Toss undefined Error line 2 t = linspace(....
non ho capito ora dov'è ancora il problema...
Toss glielo devi dire tu quanto vale, passandoglielo come argomento quando richiami la funzione
Toss glielo devi dire tu quanto vale, passandoglielo come argomento quando richiami la funzione
"raff5184":
non ho capito ora dov'è ancora il problema...
Toss glielo devi dire tu quanto vale, passandoglielo come argomento quando richiami la funzione
Ma scusa io non capisco, vado nel workspace di matlab e scrivo:
ondaQuadra(A,Toss,f,fc);
Ma A, Toss, f, fc le devo definire nel workspace di Matlab, oppure direttamente nell'm-file. O ancora dovrei fare qualcosa del genere:
ondaQuadra(A,0.01,500,1000);
?
"Ahi":l'ultima. E' un normale richiamo di funzione.
Ma A, Toss, f, fc le devo definire nel workspace di Matlab, oppure direttamente nell'm-file. O ancora dovrei fare qualcosa del genere:
ondaQuadra(A,0.01,500,1000);
?
Ad es se voglio usare la funzione sqrt( ), per calcolare la radice di 16 e salvare il valore in $a$, dalla command window scrivo:
a = sqrt(16);
oppure
x = 16;
a = sqrt(x);
se faccio solo: a = sqrt(x); %il programma mi dice: che è x???? Gli devi dire tu che x è 16
Per questo dicevo è strano che A lo usi come parametro della funzione e poi poni A=1 all'interno. E' come dire calcolami sqrt(16) ma la funzione ti dice, no io ti calcolo sqrt(25)
"raff5184":l'ultima. E' un normale richiamo di funzione.
[quote="Ahi"]
Ma A, Toss, f, fc le devo definire nel workspace di Matlab, oppure direttamente nell'm-file. O ancora dovrei fare qualcosa del genere:
ondaQuadra(A,0.01,500,1000);
?
Ad es se voglio usare la funzione sqrt( ), per calcolare la radice di 16 e salvare il valore in $a$, dalla command window scrivo:
a = sqrt(16);
oppure
x = 16;
a = sqrt(x);
se faccio solo: a = sqrt(x); %il programma mi dice: che è x???? Gli devi dire tu che x è 16
Per questo dicevo è strano che A lo usi come parametro della funzione e poi poni A=1 all'interno. E' come dire calcolami sqrt(16) ma la funzione ti dice, no io ti calcolo sqrt(25)[/quote]
E' un esercizio preso dalle soluzioni del professore, comunque modificando i parametri ho ottenuto invece di una tringolare, un'onda quadrata...
"Ahi":è quello che volevi no?
comunque modificando i parametri ho ottenuto invece di una tringolare, un'onda quadrata...
