Grafico matlab, problema con una variabile

di il
3 risposte

Grafico matlab, problema con una variabile

Buon pomeriggio!
ho un problema, devo graficare questa funzione delta=A*sin(gamma)+B*sin(gamma)+C in funzione di alpha. Nella funzione compare gamma che non ho come dato ma so che è un valore fisso, come fare in questo caso?


a=2;
b=3,5;
c=1;
d=4;
mu=b/a;
A=sin(alpha);
B=cos(alpha)-(d/a);
C= (b^2-(a^2+c^2+d^2))/(2*a*c)+(d/c)*cos(alpha);

alpha=0:0.01:2*pi
for i=1:length(alpha)
delta(1,i)=A*sin(gamma)+B*sin(gamma)+C;
end
plot(alpha, delta)

3 Risposte

  • Re: Grafico matlab, problema con una variabile

    Puoi definire un valore di "gamma" "ragionevole" oppure puoi definire un set d valori, altrettanto "ragionevoli" e vedere come cambia il grafico e, di conseguenza, l'impatto di "gamma" nell'equazione.

    Nota che, nel codice che hai pubblicato, "alpha" viene usato prima di essere definito
  • Re: Grafico matlab, problema con una variabile

    Scusami, ho rivisto la traccia dell'esercizio e mi sono accorto che anche gamma varia da 0 a 360°, quindi ho modificato lo script così:
    alpha=0:0.01:2*pi
    gamma=0:0.01:2*pi

    A=sin(alpha);
    B=cos(alpha)-(d/a);
    C= (b^2-(a^2+c^2+d^2))/(2*a*c)+(d/c)*cos(alpha)

    for i=1:length(alpha)
    delta(1,i)=A*sin(gamma)+B*sin(gamma)+C;
    end

    plot(alpha, delta)
    hold on;

    ma mi da questo errore:
    Inner matrix dimensions must agree.

    Error in esercizio_6_prima (line 19)
    delta(1,i)=A*sin(gamma)+B*sin(gamma)+C;
    che cosa potrebbe essere?
  • Re: Grafico matlab, problema con una variabile

    Nel tuo codice, "gamma" è un vettore, quindi "sin(gamma)" ritorna un vettore.
    L'errore consiste nel fatto che "cerchi" di assegnare ad una singola locazione del vettore "d" un vettore.
    C'è un ulteriore errore nella moltiplicazione "A*sin(gamma)" e "B*sin(gamma)": nelle due moltiplicazioni, entrambi i membri sono vettori (1x629) per cui non è possibile effettuare la moltiplicazione "standard".
    Puoi effettuare la moltiplicazione "elemento per elemento" aggiungendo un "punto" prima del "*" oppure moltiplicare uno degli elemento per la trasposta dell'altro.
    In alternativa puoi considerare di indicizzare anche "gamma" nel loop.
Devi accedere o registrarti per scrivere nel forum
3 risposte