Plotting Points at Specified Index Values

24 views (last 30 days)
Articat
Articat on 16 Jan 2020
Commented: Articat on 17 Jan 2020
I have one matrix, A, that is a 1x137 that consists of all of maximum index values of another matrix, B, 137x145.
I am plotting B using "imagesc()" by defining a grid to plot it on like so:
imagesc((xGrid2(1,:,1)),permute(yGrid2(1,1,:), [3 1 2]),((B)))
xGrid2(1,:,1) is a 1x145 matrix that spans from -15.4 to 46.01, and permute(yGrid2(1,1,:), [3 1 2]) is a 137x1 matrix that spans from -4.582 to 53.42.
Now, I want to plot the maximum index values of A onto B but am not sure how to do this. I am able to perform this without defining a grid easily however I want to plot A and B on the defined grid above. If I plot them together without using a user defined grid and save the corresponding x and y values of where the index maximum values lie, I have to perform a scaling factor to correct the x and y coordinates to fit my defined grid.
Thus, how can I go about plotting the maximum index values on a defined grid AND THEN extract the corresponding x and y values of these maximums?
I can use "impixelinfo()" to extract the x and y at each point but that would involve hard coding the coordinates of each point, I would like it to be a bit more automated..
Thanks for the help.
  1 Comment
Articat
Articat on 16 Jan 2020
By "index" I am referring to intensity values? I can alter these values from 0-1 by defining the "caxis([])" directly under the "imagesc(...)" call. I am not great at the Matlab lingo..

Sign in to comment.

Answers (1)

Spencer Chen
Spencer Chen on 16 Jan 2020
Let's separate your problem into 2 parts: (1) Plotting problem. (2) Finding location of you Maximum on the xGrid2.
I'll start with (2). If you have not used the max() function to extract your maximums, then you read up a little more on it -- it will give you the indices of your maximum value:
[A,IB] = max(B,[],2);
xA = xGrid2(1,IB,1);
I believe xA should give you the coordinates that you want to get.
Now, as for (1) plotting, you can hold the axis and use plot() or scatter():
hold on
plot(xGrid2(1,IB,1), squeeze(yGrid2(1,1,IB)), '.')
hold off
Note the use of the squeeze() function. It should replace your permute() operations.
(Code not tested...)
Blessings,
Spencer
  1 Comment
Articat
Articat on 17 Jan 2020
[A,IB] = max(B,[],2);
xA = xGrid2(1,IB,1);
Extracts the appropriate x-values fantastically. When I tried the plotting code the result is a constant value. I tried doing the same to extract the y-values but I get a different sized matrix. I did the following:
[A_2, IB_2] = max(jet_rot, [], 1);
I guess what is happening is I am selecting the max intensity matrix values coming from another direction. What I mean is the maximum values of A are the not the same as A_2 when they should be if I want to obtain the correct x and y coords.
Is there a way I can do the same thing for IB as for IB_2??
Thanks for your help.

Sign in to comment.

Categories

Find more on Read, Write, and Modify Image in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!