Tratando de fabricar el siguiente en Matlab:

** loop start;
   y(:,i) = function of x;
   z(:,i) = function of x;
   plot(x,y(:,i))   on figure 1, hold all;
   plot(x,z(:,i))   on figure 2, hold all;
** loop end;
   add title, legend, etc for figure 1 (NB: we have multiple lines);
   add title, legend, ets for figure 2 (NB: same, have multiple lines for the legend);`

Intentado varias combinaciones sin demasiada suerte. Logró obtener 2 cifras, pero sólo el 2-nd muestra varias líneas, no de la primera. Y no puedo entender cómo agregar leyendas a estos 2 correctamente.

InformationsquelleAutor Galaxy5727 | 2012-08-26

2 Comentarios

  1. 4

    Guardar un identificador para cada figura, y a cada uno de los ejes del objeto:

    fh1 = figure;
    hold all;
    ah1 = gca;
    
    fh2 = figure;
    hold all;
    ah2 = gca;
    
    for i=1:N
        y(:,i) = function of x;
        z(:,i) = function of x;
        plot(ah1, x, y(:,i)); %# tell it which axis to use (ah1)
        plot(ah2, x, z(:,i)); %# (ah2)
    end
    
    legend(ah1, ...) %# legend options here
    legend(ah2, ...) %# and the other legend
    
    %# note: you can set figure properties for each using fh1, fh2 handles.
    • Las grandes obras. Si usted tiene la oportunidad de contestar – ¿por qué es correcto poner «hold» en frente del bucle? Hice manijas también, al parecer, 2-nd «hold todos» fue falta o en un lugar equivocado.
    • «mantenga todos los» trabajos sobre el actual ejes. Si los ejes de un objeto no existe, crea uno. Es por eso que funciona antes de parcela nada.
    • ¿Cómo se debe hacer «espera»‘s? Algo como el de la figura(1); hold off; figure(2); hold off;
    • De la documentación: hold off restablece el estado de hold para el comportamiento predeterminado, en el que MATLAB borra el gráfico existente y restablece los ejes propiedades a sus valores predeterminados antes de que el dibujo de las nuevas parcelas.
    • Bien, no como yo querría deshacerse de todas mis líneas, pero, teóricamente, una vez que tengo ‘hold on’ activado en ambos figuras I «necesidad» (o quieren) para desactivarlo en ambos demasiado. No veo cómo usar ‘ah1’ y ‘ah 2’ para implementar tales de-activaciones => de ahí la pregunta.
    • hold(ah1,'off')

  2. 0

    Usted puede hacer esto:

    figHandle1 = figure(1);
    figHandle2 = figure(2);

    Cuando desee trama en la que la figura de hacerlo:

    figure(figHandle1) %Plot on figure 1
    %ie plot(someStuff)
    figure(figHandle2) %Plot on figure 2

    También es el mismo para el título y esas cosas, jjust necesidad de identificar que la figura haciendo:

    figure(handle);

    Espero que esto ayude.

    • figure(h) va a llevar la manija h a la parte delantera, por lo que nuevas cosas se ponen en la figura – así, esto va a funcionar. Sin embargo, es relativamente más lento que acaba de especificar que manejar para su uso por dar la manija de la trama de comando (es decir, lo que yo hice en mi respuesta). Esto puede ser importante si usted estaría de conmutación de figuras a menudo (como el OP estaría haciendo, dos veces cada vez en un bucle).
    • Yo no lo sabía, pero gracias, esperemos que el OP no está en ejecución que muchos de los bucles.
    • He intentado esto antes y lo intentó de nuevo justo ahora. El resultado — 1 de la línea en la figura 1 y 10 líneas en la figura 2. Me resisto a poner todo el código aquí como funciones son muy sofisticados. Pero todo funciona si yo ‘matar’ la figura 2 & pedir a la trama sólo la figura 1, a continuación, todos los 10 líneas están ahí.
    • En realidad acabo de encontrar el error: no se debe «contener todos» que se utiliza dos veces después de cada parcela dentro del bucle.

Dejar respuesta

Please enter your comment!
Please enter your name here