Matlab - Graficar y guardar con ciclo for

 
Vista:
Imágen de perfil de Jordy
Val: 37
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Graficar y guardar con ciclo for

Publicado por Jordy (19 intervenciones) el 03/02/2021 21:31:57
Necesito Graficar y guardar varios vectores mediante un ciclo for con nombre de archivo de la fecha y la columna graficada. El codigo que hice es el siguiente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
for g=1:length(W)-1
 
    figure (1)
    x0=02; y0=05; width=45; height=10;
    set(gcf,'units','centimeters','position',[x0,y0,width,height])
 
    fecha = W(g).date
 
    plot(W(g).A01(:,2)-22.9)
 
 
    print (strcat('A01_Tr1_','_Fecha_',fecha,'-dpng'))
 
end
El formato de la matriz estructurada es así.

Screenshot_5

Al momento de guardar me da error. Como lo puedo solucionar? Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jon
Val: 354
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Graficar y guardar con ciclo for

Publicado por Jon (161 intervenciones) el 04/02/2021 09:27:52
Buenos días Jordy,

La verdad que no estoy familiarizado con la función print, pero he hecho una prueba rápida y sí que me guarda los gráficos.

El único cambio que he hecho ha sido quitar las propiedades de la figura puesto que, de la otra forma, en el PDF vertical el gráfico salía cortado.

Se me guardan los siguientes archivos:

Archivos

Al abrir los archivos, se me abre Acrobat Distiller:

Acrobat-Distiller

Finalmente, obtengo el PDF deseado:

PDF

Este es el código de prueba que he utilizado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%% Datos
W(1).date = '04_02_2021';
W(2).date = '05_02_2021';
W(3).date = '06_02_2021';
 
W(1).A01 = randi(10,4,4);
W(2).A01 = randi(10,4,4);
W(3).A01 = randi(10,4,4);
 
%% Bucle
for i = 1 : length(W)
    figure(1);
    % x0=02; y0=05; width=45; height=10;
    % set(gcf,'units','centimeters','position',[x0,y0,width,height]);
 
    fecha = W(i).date;
 
    plot(W(i).A01(:,2)-22.9);
 
    print(strcat('A01_Tr1_','_Fecha_',fecha,'-dpng'));
end

Aunque no sea un experto en el tema, espero que te haya servido de ayuda.

Un saludo,

Jon
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jordy
Val: 37
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Graficar y guardar con ciclo for

Publicado por Jordy (19 intervenciones) el 04/02/2021 19:36:32
Muchas gracias por tu respuesta. Sin embargo me da el siguiente error.

Error using strcat (line 46)
Inputs must be character vectors, cell arrays of character vectors, or string arrays.

Otra Consulta. Existe la posibilidad de transformalo a .png?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jon
Val: 354
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Graficar y guardar con ciclo for

Publicado por Jon (161 intervenciones) el 05/02/2021 08:35:34
Buenos días Jordy,

El problema es que la fecha está en formato datetime y para poder utilizar la función strcat las entradas deben ser strings. Para ello, tienes que hacer la transformación con la función date2str.

Fuente: https://es.mathworks.com/help/matlab/ref/datestr.html

En cuanto a la otra pregunta, sí, se puede exportar un gráfico en formato .png. El único requisito es tener MATLAB R2020a o posterior.

Ejemplo:
1
2
3
4
5
6
7
8
t = tiledlayout(2,1);
nexttile
plot([0 1 0 1])
nexttile
plot([1 0 1 0])
 
% Requires R2020a or later
exportgraphics(t,'twoplots.eps')

Fuente: https://es.mathworks.com/help/matlab/creating_plots/saving-your-work.html

Espero que con esto puedas hacer lo que quieras.

Un saludo,

Jon
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jordy
Val: 37
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Graficar y guardar con ciclo for

Publicado por Jordy (19 intervenciones) el 05/02/2021 14:48:40
Muchas Gracias Jon. Me sirvió bastante tu ayuda. Un abrazo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar