Interp2 - make resolution lower

I have a matrix 'I' representing a digital elevation model, with a pixel resolution of 90m. I need to lower the resolution to 250m and I've been advised to do this using interp2 but I'm unclear on how to do so from the help file?
I don't understand what I put as the X, Y, Z, Xi, Yi inputs.
Thank you

8 件のコメント

Matt Kindig
Matt Kindig 2013 年 3 月 7 日
In what form do you have the model? Is it an image? A matrix of vertices? etc. That will help us advise you further.
Grant
Grant 2013 年 3 月 7 日
It is in a .tif file, which appears as a 4609 x 2737 matrix, each cell representing the z value. Thank you
Matt Kindig
Matt Kindig 2013 年 3 月 7 日
Matt J's suggestion of griddedInterpolant would be good. If you must use interp2, the code would be this:
Values = imread('/your/tif/file/here.tif');
Xi = 1:4609; Yi = 1:2737; %original resolution
Xo = 1:(250/90):Xi(end);
Yo = 1:(250/90):Yi(end);
ValOut= interp2(Xi, Yi, Values,Xo, Yo); %do the interpolation
%note that this will not be an image anymore
mesh(Xo, Yo, ValOut); %illustrate new data
Grant
Grant 2013 年 3 月 7 日
Thank you, but it tells me: ??? Error using ==> interp2 at 147 The lengths of X and Y must match the size of Z.
The maximum z value, by the way, is 2470.
Matt Kindig
Matt Kindig 2013 年 3 月 7 日
編集済み: Matt Kindig 2013 年 3 月 7 日
What is the output of:
>> size(Values)
?
Image Analyst
Image Analyst 2013 年 3 月 7 日
You can use linspace(startValue, endingValue, numberOfSteps) instead of startValue:stepValue:endingValue to make sure arrays have exactly the size (number of elements) that you want them to have.
Grant
Grant 2013 年 3 月 8 日
Hi, The output of size is:
ans =
4609 2737
Thanks
Grant
Grant 2013 年 3 月 8 日
I think previous error was just me mixing x and y, but it still tells me ??? Error using ==> interp2 at 147 XI and YI must be the same size or vectors of different orientations.

サインインしてコメントする。

 採用された回答

Matt J
Matt J 2013 年 3 月 8 日

1 投票

XI and YI must be the same size or vectors of different orientations.
Xo must be a row vector and Yo must be a column vector. So just transpose Yo
ValOut= interp2(Xi, Yi, Values,Xo, Yo.'); %do the interpolation

2 件のコメント

Grant
Grant 2013 年 3 月 8 日
Ahhh. I think it worked but seems futile as out of memory. (Using 250/90 processed but did it the wrong way round, increasing the resolution rather than lowering).
Doing it with 90/250 returns ??? Out of memory. Type HELP MEMORY for your options.
Error in ==> interp2>linear at 317 s = 1 + (arg4-arg1(1))/(arg1(end)-arg1(1))*(ncols-1);
Error in ==> interp2 at 220 zi = linear(ExtrapVal,x,y,z,xi,yi);
So I expect there is nothing I can do.
Thank you for your help.
Matt J
Matt J 2013 年 3 月 8 日
I assume you're using a 32-bit machine. Pre-converting your Values to type single would probably make it fit
ValOut= interp2(Xi, Yi, single(Values),Xo, Yo.');
Or, look for a 64-bit computer to work on.

サインインしてコメントする。

その他の回答 (2 件)

Matt J
Matt J 2013 年 3 月 7 日
編集済み: Matt J 2013 年 3 月 7 日

1 投票

I would advise using griddedInterpolant instead
F=griddedInterpolant(I);
Now evaluate F at the sample locations that you want. So, for example, if you want the resulting image to be 100x250, you would do
x=linspace(1,size(I,1),100);
y=linspace(1,size(I,2),250);
I_new = F({x,y});
Grant
Grant 2013 年 3 月 8 日

0 投票

Thanks, but it appears I don't have griddenInterpolant in my toolbox.
I'd also prefer to use interp2 to ensure I'm consistent with another person's method.

2 件のコメント

Matt J
Matt J 2013 年 3 月 8 日
編集済み: Matt J 2013 年 3 月 8 日
Thanks, but it appears I don't have griddenInterpolant in my toolbox.
What MATLAB version are you using? It would have to be several years old. You've spelled griddedInterpolant incorrectly, so that might be why you couldn't find it.
I'd also prefer to use interp2 to ensure I'm consistent with another person's method.
INTERP2 calls griddedInterpolant to perform its interpolations. It would be the same method, just with a somewhat easier (IMO) interface.
Grant
Grant 2013 年 3 月 8 日
I'm using R2010a. I typed it correctly into the command window and it can't find it - nor for the help file. The same on my university computer. :/

サインインしてコメントする。

カテゴリ

質問済み:

2013 年 3 月 7 日

Community Treasure Hunt

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

Start Hunting!

Translated by