Mapping 1D vector to 2D area

69 次查看(过去 30 天)

load xPoints; load yPoints; j=boundary(xPoints,yPoints,0.1); Plot(xPoints(j),yPoints(j))

%How do I map the x-values to y-values here?

  4 个评论
Prasanna Routray
Prasanna Routray 2024-9-27,11:23
Hi Rahul,
I want to get a set of points that map to a particular x-value.
The boundary actually forms an area.
I want to get a function or method so that whenever I get an 'x', I should be able to get a set of y-values.
Hope that make the question clear. The forum was having an issue with server so, posted it from my phone.
Image Analyst
Image Analyst 2024-9-27,16:59
What if, for a given vertical line (like you specified x with some specific value), there are no y values for that exact x value? Maybe some are close but not exact. Do you want to find all y values within a certain tolerance of your specified x? If so use ismembertol().

请先登录,再进行评论。

采纳的回答

Cris LaPierre
Cris LaPierre 2024-9-27,12:11
Are you wanting all the corresponding yPoints, or just those on the boundary?
load xPoints;
load yPoints;
j=boundary(xPoints,yPoints,0.1);
To me, the simplest approach is to find the indices of the desired X value, and use that the extract the corresponding Y values.
idx = xPoints==2;
yPoints(idx)
ans = 5×1
0.0016 0.0015 0.0015 0.0014 0.0014
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
That will return all points. If you just want them from the boundary, try this.
ids = xPoints(j)==2;
yPoints(j(ids))
ans = 0.0014
Here, only one value is returned because only one X value in boundary exactly equals 2. In that case, you could use ismembertol.
LIA = ismembertol(xPoints(j),2,0.01);
yPoints(j(LIA))
ans = 2×1
0.0013 0.0014
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
  6 个评论
Prasanna Routray
Prasanna Routray 2024-9-30,6:01
Cris, i accept this answer because we have to look for a workaround for this. This works for the timebeing as I'm fixing the boundary.
Thanks..
Cris LaPierre
Cris LaPierre 2024-9-30,12:56
Feel free to submit an enhancement suggestion on the feature you would like to MathWorks here: https://www.mathworks.com/support/contact_us.html

请先登录,再进行评论。

更多回答(1 个)

Rahul
Rahul 2024-9-27,14:52
I believe that you're trying to want to obtain a reverse mapping, from xPoints data to yPoints data, using a MATLAB function. Here's how you can code the same:
function [res_x, res_y] = getYs(x, xPoints, yPoints)
x = 5;
n = size(xPoints, 1);
res_y = [];
res_x = [];
for i=1:n
if xPoints(i) == x
res_y = [res_y yPoints(i)];
res_x = [res_x x];
end
end
end
Use the above function to get yPoints values corresponding to a given 'x', plot the resultant values on the figure, and display the resultant array 'res_y':
load xPoints; load yPoints;
j=boundary(xPoints,yPoints,0.1);
plot(xPoints(j),yPoints(j), 'Color','black');
hold on;
% Call getYs to get corresponding y values for a given x = 5
x = 5;
[res_x, res_y] = getYs(x, xPoints, yPoints);
% Plot returned data using dotted red line on same graph
plot(res_x, res_y, 'r.');
disp(res_y);
hold off;
  1 个评论
Prasanna Routray
Prasanna Routray 2024-9-30,5:59
Hi Rahul,
I have been trying to do reverse mapping. however, I'm looking for a set of points and not just the boundary points as I posted in one of the replays.
Thanks

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Geographic Plots 的更多信息

标签

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by