How to add multiple indices to graph title, legend, and output image?

4 vues (au cours des 30 derniers jours)
Emerson De Souza
Emerson De Souza le 2 Fév 2012
Modifié(e) : Jon le 26 Sep 2013
Motivation: I want to automatize the loading, processing and output of multiple data. Indices such as i, j, k, etc... are used to distinguish them. The output should have the same input indices.
Example: For the case of one data (graph and output image), I have the following command lines:
i=5;
f=figure(i);
x = 0:pi/100:2*pi;
y = sin(x-i);
h=plot(x,y);
legend(h,sprintf('sin(x-%d)',i),1);
title(['GRAPH\_',num2str(i)]);
print(f,'-dtiff', ['IMAGE_',num2str(i)]);
PROBLEM: I have multiple indices and I want that all of them be part of graph title and image name, so I changes the lines above intuitively to:
i=5;
j=3;
k=7;
f=figure(i,j,k);
x = 0:pi/100:2*pi;
y = j*sin(k*x-i);
h=plot(x,y);
legend(h,sprintf('%d*sin(%d*x-%d)',j,k,i),1);
title(['GRAPH_%d_INDJ_%d_INDK_%d',num2str(i,j,k)]);
print(f,'-dtiff', ['GRAPH_%d_INDJ_%d_INDK_%d',num2str(i,j,k)])
I expected to obtain:
graph title: GRAPH_5_INDJ_3_INDK_7; and
image name: GRAPH_5_INDJ_3_INDK_7,
where indices(IND)5 3 and 7 are part of titles and names.
But unfortunately I obtain the following error:
??? Error using ==> figure
Too many input arguments.
f=figure(i,j,k);
So I wonder if someone could help me to correct these line so that I obtain what I expect.
Thank you in advance for your help
Emerson

Réponse acceptée

Amit Davidi
Amit Davidi le 2 Fév 2012
The last line should be:
print(f,'-dtiff', sprintf('GRAPH_%d_INDJ_%d_INDK_%d',i,j,k))
  1 commentaire
Emerson De Souza
Emerson De Souza le 2 Fév 2012
Thank you,
now it works as desired.
Wish you a nice day
Emerson

Connectez-vous pour commenter.

Plus de réponses (2)

Walter Roberson
Walter Roberson le 2 Fév 2012
figure gets passed the single figure number of the figure to create. What would you like to have happen with the triple index, taking in to account that figure numbers can only be integers and not vectors?
  1 commentaire
Emerson De Souza
Emerson De Souza le 2 Fév 2012
Walter, I understand your comment.
All what I want to do is to name the graph and output image using
indices, because I don't want to change them manually every time one by one.
What I want to happen is:
I write the indices:
i=5
j=2
k=7
and wish that these numbers be part of the graph name:
title('graphi_parameterj_parameterk'),
and name of output image:
print -dtiff imagei_parameterj_parameterk
My lines worked for one index, but I don't know how to extend to multiple indices.
I hope you have an idea how to solve the problem.
Thanks
Emerson

Connectez-vous pour commenter.


Amit Davidi
Amit Davidi le 2 Fév 2012
If I understand you correctly, I don't think you need to number the figure. You can just use:
f = figure;
By the way, once you'll solve this error, you're expected to get another one... You use twice this line:
['GRAPH_%d_INDJ_%d_INDK_%d',num2str(i,j,k)]
You should replace with:
sprintf('GRAPH_%d_INDJ_%d_INDK_%d',i,j,k)
  1 commentaire
Emerson De Souza
Emerson De Souza le 2 Fév 2012
The following lines
i=10;
j=4;
k=5;
f=figure;
x = 0:pi/100:2*pi;
y = j*sin(k*x-i);
h=plot(x,y);
box on
title(sprintf('GRAPH %d INDJ %d INDK %d',i,j,k));
sprint(f, '-dtiff','GRAPH %d INDJ %d INDK %d',i,j,k);
solves the problem with the name of the graph, but it does not save this image to the hard disk. I obtain the following error for the last line:
??? Undefined function or method 'sprint' for input
arguments of type 'double'.
By the way, to only name the graph, I don't need f=figure at all.
Hope you know a way to SAVE the image.
Thanks
Emerson

Connectez-vous pour commenter.

Catégories

En savoir plus sur Images dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by