I have 10 axes in which I want the most relevant images to be shown in. So I defined them as follows. But I have a problem that if the first image is not relevant, the axes1 remains empty. Can I just define one axe for all images? How to do that?

5 Comments

You can define one axes for all images but then you will only be able to see one at a time rather than up to 10 as your current implementation seems to allow.
What do you actually want the result of this to look like?
Ali Jaber
Ali Jaber on 4 Apr 2016
Edited: Ali Jaber on 4 Apr 2016
I need many images to be shown in the axe based on the distance, one after one not necessary at the same time
So just get rid of your array of axes and use a single axes (handles.axes1) instead with e.g.
pause(10)
after the imshow or whatever length of time you want between the different images
I can't since I want the old image to stay appeared..
any help plz?

Sign in to comment.

 Accepted Answer

Ali - if you want to ignore the images which are not relevant (does this mean that cosTheta <= 0.5?) then use a different local variable to access the axes handles. For example,
atAxes = 1;
for k=1:10
a = trainZ(k,:);
b = testZ;
cosTheta = dot(a,b)/(norm(a)*norm(b));
if(cosTheta > 0.5)
str = strcat('C:\Users\User\Desktop\images\',num2str(k),'.jpg');
img = imread(str);
axes(handles.axes(atAxes));
atAxes = atAxes + 1;
imshow(img);
end
end
Note how we use atAxes so that we update the appropriate axes with a "relevant" image. So if 4 of our 10 images are relevant, then only the first four axes are updated with the images.
Is this what you are looking for? Or do you require something more to ensure that the unused axes are hidden or removed?

2 Comments

Thank you very much.. This is exactly what I want. Concerning not relevant images (cosTheta <= 0.5), I take it as example since I am not sure about it. Do you have any idea that may help me?
Ali - without knowing more about what your code is doing or what you consider to be "relevant", I can't comment on the use of cosTheta. What does it represent to you?

Sign in to comment.

More Answers (1)

You can display more than one image in an axes if you stitch them together.
tallImage = [image1; image2];
wideImage = [image1, image2];

Tags

Asked:

on 4 Apr 2016

Edited:

on 24 Apr 2016

Community Treasure Hunt

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

Start Hunting!