Yo soy la representación de datos en MATLAB en tiempo real. Quiero utilizar un identificador. Mi problema es que no sé cómo trazar más de una S-Curva de los Datos.

Encontré el siguiente código
Se muestra cómo graficar un conjunto de YData. Ha alguien tiene una idea para transformar el código en dos o más Y conjuntos de datos, por ejemplo, sind(x) como una curva adicional en la trama?

x = 1:1000;
y = cosd(x);

xi = x(1);
yi = y(1);
h = plot(xi, yi, 'YDataSource', 'yi', 'XDataSource', 'xi');

for k = 2:1000...
xi = x(1:k);
yi = y(1:k);
refreshdata(h, 'caller');
drawnow;
end;
InformationsquelleAutor user1677716 | 2012-10-25

4 Comentarios

  1. 2

    El código de abajo, a mí me funciona, si usted realmente desea utilizar asas

    x = 1:1000;
    y = cosd(x);
    y2 = sind(x);
    
    xi = x(1);
    yi = y(1);
    yi2 = y2(1);
    figure(1); clf;
    h = plot(xi, yi, 'YDataSource', 'yi', 'XDataSource', 'xi');
    hold on;
    h2 = plot(xi, yi2, 'YDataSource', 'yi2', 'XDataSource', 'xi');
    
    for k = 200:1000
        xi = x(1:k);
        yi = y(1:k);
        yi2 = y2(1:k);
        refreshdata(h);
        refreshdata(h2);
        drawnow;
    end;

    Usted no necesita un hold on.

    También, en lugar de refreshdata puede utilizar set como Andrey sugerido:

    set(h,'Xdata',xi,'YData',yi);
    set(h2,'Xdata',xi,'YData',yi2);
    • Muchas gracias! Para mí el ejemplo lo hice! El tiempo real de la parcela funciona ahora con varias curvas. Gran Respuesta!
  2. 3

    Primero de todo, nunca use refreshdata. Utilice el set método en su lugar.

            set(h,'Xdata',xi,'YData',yi);

    En segundo lugar, usted debe hacer dos parcelas

          h1 = plot(xi, yi);
          h2 = plot(xi, yi);

    Y actualización de cada uno en consecuencia.

    • Muchas gracias hasta ahora Andrey. Si hago dos parcelas, no se que significa que habrá dos figuras? Soy una Matlab Principiante, así que perdón si esta idea es una estupidez.
    • Andrey, ¿por qué no debería usar refreshdata?
    • una muy buena pregunta. Acabo de escribir es como la pregunta y la respuesta de stackoverflow.com/questions/13102654/….
    • Gracias, Andrey. Voy a echar un vistazo mañana..
  3. 1

    Se que tal vez buscando la mantenga pulsado comando?

    plot(1 : 10, (1 : 10).^2, 'r')
    hold on
    plot(1 : 10, (1 : 10).^3)

    EDICIÓN:

    Puede utilizar hold en combinación con set a la actualización de la parcela (ver también Andrey de respuesta):

    h1 = plot(1 : 10, (1 : 10).^2, 'r');
    hold on;
    h2 = plot(1 : 10, (1 : 10).^3);
    set(h1, 'XData', 1 : 2 : 20);
    set(h2, 'YData', 0.1 * (1 : 20).^3);

    Los ejes se actualizará automáticamente.

    • Hola Florian. He leído que cuando se hace en tiempo real de las parcelas se supone que debe ser más eficaz el uso de asas. Aparte de eso, espera congela mi ejes (creo que en el pasado así) que yo no deseo. La aplicación funciona bien con asas aparte del hecho de que yo no soy capaz de trazar varias líneas.
    • en no congelar sus ejes.
    • Usted puede utilizar hold junto con asas, véase mi edición. También, como angainor señalado, los ejes todavía actualización automática.
    • Si te gusta celebrar, «hold on» le dará múltiples curvas en el mismo color. El uso de «hold» para obtener los diferentes colores de las curvas (como si hubiera trazan todas las curvas con una parcela de comandos).
  4. 0

    Si usted no se preocupan demasiado acerca de la visualización del mismo color para todas las curvas, simplemente concatenar los datos de x en un único vector separados por NaN entre la curva de componentes (hacer una cosa similar para la y de datos). A continuación, el «complot» comando puede tomar en estos grandes de x y y de los vectores y mostrará todo a la vez. Usted puede obtener todo el color del problema haciendo algo similar con el colordata matriz.

Dejar respuesta

Please enter your comment!
Please enter your name here