Grafico asse x

di il
4 risposte

Grafico asse x

Salve, durante la crezione di un grafico è possibile limitare il passo dell'asse x ossia voglio che mi si rappresentino dei valori come 2.4744e-04, che questo valore varia di poco di 2.47 e di 2.46 di 2.45

in modo tale da essere visibile il tracciato all'interno del grafico? Grazie

4 Risposte

  • Re: Grafico asse x

    Cosa intendi con "passo dell'asse X"?

    Quando plotti un grafico in MatLab, i limiti degli assi X e Y (e Z nel caso di grafici in 3D) vengono settati in modo automatico in modo che tutto l grafico sia rappresentato.

    Per modificare "manualmente" i limiti degli assi puoi usare le funzioni:
    xlim([xmin xmax])
    ylim([ymin ymax])
    zlim([zmin zmax])
    axis([xmin xmax ymin ymx]) % caso 2D
    axis([xmin xmax ymin ymx zmin zmax]) % caso 3D
    o forse vuoi che i valori degli "XTick" siano rappresentati con più cifre?

    Dovresti aggiungere qualche dettaglio alla domanda, magari inserendo il codice che usi per generare il grafico ed una immagine che chiarisca il problema e quanto desideri ottenere.

    Hope this helps.
  • Re: Grafico asse x

    ask_raf ha scritto:


    Cosa intendi con "passo dell'asse X"?

    Quando plotti un grafico in MatLab, i limiti degli assi X e Y (e Z nel caso di grafici in 3D) vengono settati in modo automatico in modo che tutto l grafico sia rappresentato.

    Per modificare "manualmente" i limiti degli assi puoi usare le funzioni:
    xlim([xmin xmax])
    ylim([ymin ymax])
    zlim([zmin zmax])
    axis([xmin xmax ymin ymx]) % caso 2D
    axis([xmin xmax ymin ymx zmin zmax]) % caso 3D
    o forse vuoi che i valori degli "XTick" siano rappresentati con più cifre?

    Dovresti aggiungere qualche dettaglio alla domanda, magari inserendo il codice che usi per generare il grafico ed una immagine che chiarisca il problema e quanto desideri ottenere.

    Hope this helps.
    Allora
    
    
     conta=0;
                
                for k=1:3
                
                  tstart=tic;
       
                  
    
                  
                  conta=conta+1;
                  
                  
                  
                  t(conta)=toc(tstart);
    
                end
                          
                  
    x(1,1)=t(1);
    x(1,2)=t(2);
    x(1,3)=t(3);
    
    
    
    
                  y(1,1)=3;
                  
               y(1,2)=2;
    y(1,3)=3;
                  
                                                   
                                                  
    plot (x(1,:),y(1,:));
                         
                            
    
    Salve, alla fine il problema non sussiste è tutto corretto, per rappresentare i tempi sull'asse delle x e i valori da 1 a n per tracciarne un grafico bisogna solamente unire i punti come ho fatto,giusto?
  • Re: Grafico asse x

    Quanto hai scritto è corretto

    Solo qualche commento:
    [*] conviene sempre, quando possibile, inizializzare i vettori e le matrici allocandone lo spazio in memoria, questo consente di velocizzare l'esecuzione dello script in quanto MatLab non deve chiamare automaticamente le funzioni per l'allocazione della memoria ad ogni iterazione.; Nel caso dello script che hai pubblicato i vettori "t", "x" e "y" avranno solo 3 componenti, per cui non si nota la differenza, ma nel caso di matrici (o vettori) di grandi dimensioni il vantaggio è notevole
    Prima del "ciclo for" puoi scrivere:
    t=zeros(1,3)
    x=zeros(1,3)
    y=zeros(1,3)
    
    per creare tre vettori di tre elementi inizializzati a "0"

    [*] a meno che il contatore "conta" non venga usato in qualche altra parte dello script, non è necessario, puoi scriver direttamente:

    t(k)=toc(tstart);

    [*] l'istruzione:

    y(1,1)=3;

    mi sembra (ma potrei sbagliare) errata; sembrerebbe più logico fosse:

    y(1,1)=1;

    [*] dal momento che, almeno nello script che hai inserito, le variabili "x" e "y" vengono usate come vettori e non come matrici (il primo indice è sempre "1"), non è necessario indicarlo esplicitamente, puoi scrivere direttamente:
    x(1)=t(1);
    x(2)=t(2);
    x(3)=t(3);
    
    y(1)=3; % Vedi commento precedente, non dovrebbe essere y(1)=1?
    y(2)=2;
    y(3)=3;
    
    Inoltre, potresti spostare l'assegnazione dei valori ai vettori "x" e "y" direttamente nel "ciclo for"

    [*] siccome (vedi commento precedente) "x" e "y" sono usati come vettori (e non come matrici), per plottarli puoi scrivere direttamente:

    plot (x,y);


    In base a tutti i commenti precedenti, il tuo script potrebbe essere:
    t=zeros(1,3)
    x=zeros(1,3)
    y=zeros(1,3)
    for k=1:3
       tstart=tic;
       x(k)=toc(tstart);
       y(k)=k;
    end
    plot (x,y);
    
    Hope this helps.
  • Re: Grafico asse x

    https://www.iprogrammatori.it/forum-programmazione/matlab-simulink/grafico-asse-t25563.html#p8543590

    ti taggo il post
Devi accedere o registrarti per scrivere nel forum
4 risposte