MATLAB Answers

NH3
0

Converting the Domain of an Array

Asked by NH3
on 5 Dec 2018
Latest activity Commented on by NH3
on 5 Dec 2018
I have an array of m columns by n rows. The array corresponds to locations on a physical geometry, e.g. the value in cell [1,1] corresponds to the temperature at a physical x and y location. How do I convert my array into a function that can be plotted in the physical domain?

  2 Comments

jonas
on 5 Dec 2018
What do you mean? Do you want to fit a surface to your data, plot the scattered data points or interpolate and plot?
NH3
on 5 Dec 2018
Interpolate and plot.
Essentially, I am looking to convert the value in cell [1,1] to a solution to a function when x=0 and y=0, the value in cell [2,1] to the solution to the function when x=0 and y =0.25...and so on.

Sign in to comment.

Products


Release

R2018b

1 Answer

Answer by jonas
on 5 Dec 2018
Edited by jonas
on 5 Dec 2018
 Accepted Answer

Read about scatteredInterpolant and post some data if you need help. Using meshgrid and griddata would probably suffice, but your description leads me to believe scatteredInterpoland is what you're looking for.
Use surf(x,y,z) or contourf(x,y,z) to plot. Note that you must interpolate z to a rectangular grid first, using the functions suggested above.

  3 Comments

NH3
on 5 Dec 2018
Say I have the following array:
x=[1,2,3,4,5;6 7 8 9 10; 11 12 13 14 15]
A contour plot of this array goes from 1 to 5 on the horizontal axis and 1 - 3 on the vertical axis.
contour(x,'Fill','on')
I want to change the horizontal axis to x=0 through x=0.25 and the vertical axis from y=0 to y=0.1.
The points in my current array correspond to physical locations on my geometry.
jonas
on 5 Dec 2018
I assume your example array denoted x is actually z-data? When you pass a single array to contour, then it is interpreted as z-data and the indices are interpreted as xy-data. You can also pass xy-data to contour, which in your case are spatial coordinates. This can be really easy, if your data is already gridded, and a little bit harder if your data is scattered.
Try this:
T = [1,2,3,4,5;6 7 8 9 10; 11 12 13 14 15];
x = linspace(0,0.25,5);
y = linspace(0,0.1,3)
contourf(x,y,T)
NH3
on 5 Dec 2018
Thanks!

Sign in to comment.