Simple question, I have matrix A=
[1 1 1 1 1]
[1 1 60 1 1]
[1 1 1 1 1]
and i want to interpolate values inside the matrix to get sometgink like
[1 15 30 15 1]
[15 30 60 30 15]
[1 15 30 15 1]
I know that i have to use interp2 but it is just not working for me...

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 7 Dez. 2013
Bearbeitet: Andrei Bobrov am 8 Dez. 2013

0 Stimmen

A =[ 1 1 1 1 1
1 1 60 1 1
1 1 1 1 1];
bw = A>1;
B = bwdist(bw,'cityblock');
v = [60./pow2(0:max(B(:))-1),1];
out = v(B+1);
ADD
use scatteredInterpolant:
A = [40 1 1 1 60
1 1 20 1 1
15 1 1 1 1];
[ii,jj] = find(A > 1);
ii = [ii;size(A,1)];
jj = [jj;size(A,2)];
F = scatteredInterpolant(ii,jj,[A(A>1);A(end)]);
[x,y]=ndgrid(1:size(A,1),1:size(A,2));
out = F(x,y);

5 Kommentare

This works fine but what if i want to make it more generally. For example to interpolate matrixes like:
[40 1 1 1 60]
[1 1 20 1 1]
[15 1 1 1 1]
and to somehow interpolate between pixels in matrix.
Andrei Bobrov
Andrei Bobrov am 8 Dez. 2013
Bearbeitet: Andrei Bobrov am 9 Dez. 2013
see ADD
Jakub
Jakub am 9 Dez. 2013
what is ADD?
Andrei Bobrov
Andrei Bobrov am 9 Dez. 2013
see code after word ADD in my answer
Jakub
Jakub am 9 Dez. 2013
Thank you very much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Interpolation finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 7 Dez. 2013

Kommentiert:

am 9 Dez. 2013

Community Treasure Hunt

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

Start Hunting!

Translated by