Pagina 1 di 1

[RISOLTO] Problema QtOctave funzione Plot

Inviato: mercoledì 17 novembre 2010, 9:37
da Marci89
Gente, poco da dire, questo è l'm file:
---------------------------------------------------
x = input("Inserisci il valore di x ->");
if x = 1
y = 0;
end;
x = linspace(2,(-2));
plot(x,y);
----------------------------------------------------
con QtOctave ne grafico non viene visualizzato nulla
con Matlab si vede il grafico...... Why???  ??? ??? ??? ???

Re: Problema QtOctave funzione Plot

Inviato: mercoledì 17 novembre 2010, 15:33
da Elrond
Mi sembra che x sia un vettore e y un numero, cosa dovrebbe graficare? Su Matlab cosa esce (inserendo quale valore alla x)?

Re: Problema QtOctave funzione Plot

Inviato: giovedì 18 novembre 2010, 14:53
da Marci89
dovrebbe risultare il grafico della funzione a seconda del valore inserito nella x.

Re: Problema QtOctave funzione Plot

Inviato: giovedì 18 novembre 2010, 17:52
da Elrond
Marci89 ha scritto: dovrebbe risultare il grafico della funzione a seconda del valore inserito nella x.
Ma quale funzione? Provo a spiegare il significato di questo breve script:

Codice: Seleziona tutto

x = input("Inserisci il valore di x ->");
Inserisci il valore di x (un numero immagino)

Codice: Seleziona tutto

if x <= 0
   y = -2;
Se il numero x è minore o uguale a x allora la variabile y vale -2 (ed è un numero)

Codice: Seleziona tutto

elseif 0<x && x<1
   y = -2 + 2*x;
altrimenti se x è compreso fra 0 e 1 la variabile y vale -2+2*x (esempio: x = 0.5 → y = -1) e y è sempre un numero (non un vettore)

Codice: Seleziona tutto

else x >= 1
   y = 0;
end;
altrimenti la variabile y è sempre un numero e vale 0.

Codice: Seleziona tutto

x = linspace(2,(-2));
Ridefinisci magicamente x come un vettore di 100 elementi da 2 a -2 (utilità ignota)

Codice: Seleziona tutto

plot(x,y);
chiedi di rappresentare y (un numero puro, non un vettore) in funzione di x (che con l'ultima istruzione è diventato un vettore). Cosa dovrebbe capire Octave dal tuo script (e soprattutto come fa Matlab a capire qualcosa)?

Re: Problema QtOctave funzione Plot

Inviato: lunedì 22 novembre 2010, 15:13
da Marci89
praticamente y dovrebbe contenere la funzione da inserire
nel grafico dando alla x diversi valori.

es: se input x = 0 -> y = -2

il grafico risultante è una retta parallela a x che passa per y=-2

Re: Problema QtOctave funzione Plot

Inviato: lunedì 22 novembre 2010, 15:25
da Elrond
Dai in octave il comando

Codice: Seleziona tutto

help plot
e otterrai:

Codice: Seleziona tutto

If more than one argument is given, they are interpreted as

          plot (Y, PROPERTY, VALUE, ...)

     or

          plot (X, Y, PROPERTY, VALUE, ...)

     or

          plot (X, Y, FMT, ...)

     and so on.  Any number of argument sets may appear.  The X and Y
     values are interpreted as follows:

        * If a single data argument is supplied, it is taken as the set
          of Y coordinates and the X coordinates are taken to be the
          indices of the elements, starting with 1.

        * If the X is a vector and Y is a matrix, then the columns (or
          rows) of Y are plotted versus X.  (using whichever
          combination matches, with columns tried first.)

        * If the X is a matrix and Y is a vector, Y is plotted versus
          the columns (or rows) of X.  (using whichever combination
          matches, with columns tried first.)

        * If both arguments are vectors, the elements of Y are plotted
          versus the elements of X.

        * If both arguments are matrices, the columns of Y are plotted
          versus the columns of X.  In this case, both matrices must
          have the same number of rows and columns and no attempt is
          made to transpose the arguments to make the number of rows
          match.

          If both arguments are scalars, a single point is plotted.
la funzione plot non produce sostanzialmente nulla se hai uno scalare (Y) contro un vettore (X), o al massimo un punto (ma non si vede bene nel grafico, non sono sicuro che ci sia quel punto). Lo script è impostato male, così dovrebbe funzionare (anche se non sono sicuro su cosa dovrebbe succedere nel caso 0<x && x<1):

Codice: Seleziona tutto

x = input("Inserisci il valore di x ->");
t = linspace(2,(-2));
if x <= 0
   y = -2*ones(1,100);
elseif 0<x && x<1
   y = -2 + 2*t;
else x >= 1
   y = zeros(1,100);
end;
plot(t,y)

Re: Problema QtOctave funzione Plot

Inviato: martedì 30 novembre 2010, 8:51
da Marci89
Funziona!!!  ;D ;D ;D
grazie mille!!!