MATLAB Answers

imshow produces error when used in subplot

22 views (last 30 days)
F Sp
F Sp on 6 Jun 2020 at 10:03
Commented: F Sp on 7 Jun 2020 at 17:30
Hello,
I had a working code using:
figure, imshow(I);
Then I wanted to put all the displayed images into one figure using subplot in this way:
figure;
h = [];
h(1) = subplot(2,4,1); etc.
and calling the image via:
imshow(I,'Parent', h(2))
The problem is that this now produces the error:
"Unable to perform assignment because dot indexing is not supported for variables of this type.
Error in images.internal.basicImageDisplay (line 78)
ax_handle.Colormap = map;
Error in imshow (line 330)
hh = images.internal.basicImageDisplay(fig_handle,ax_handle,..."
Also the image now appears blue and yellow instead of black and white.
Being new to MatLab I can only assume something went wrong with the colormap interfering with multiple images in one figure.
Any help would be appreciated a lot :)

  0 Comments

Sign in to comment.

Accepted Answer

Ameer Hamza
Ameer Hamza on 6 Jun 2020 at 12:09
From your code, it is not clear how did you assign the 2nd element of vector h. However, I recommend initializing 'h' with 'gobjects'.
Replace
h = [];
with
h = gobjects;

  3 Comments

F Sp
F Sp on 6 Jun 2020 at 13:10
That worked! Thank you a lot! I found the h=[] on this page, that's why I used it
Image Analyst
Image Analyst on 6 Jun 2020 at 20:26
What page gave that incorrect information? Not this one.
F Sp
F Sp on 7 Jun 2020 at 17:30
somewhere on MatLab Answers, of course not in this particular question. Thank you guys

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 6 Jun 2020 at 16:12
Edited: Image Analyst on 6 Jun 2020 at 16:13
You do not need to initialize h to anything, not [] nor gobjects. This works perfectly fine:
figure;
h = []; % Unnecessary.
h(1) = subplot(2,4,1);
% and calling the image via:
I = imread('peppers.png');
imshow(I,'Parent', h(1))
Just make sure you haven't assigned h to anything in advance, like h is not already a cell array or structure or some other complicated non-numerical variable. If h does already exist when you get to h=[], then it might be a mistake to use the same variable h because setting it to null would blow it away and if you ever needed that original h again you would not have it anymore.
Just make sure whatever index you're using in h exists, like you can't use h(2) if you haven't called h(2) = subplot yet.

  1 Comment

Sign in to comment.