Simple interpolation inside matrix

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...

 採用された回答

Andrei Bobrov
Andrei Bobrov 2013 年 12 月 7 日
編集済み: Andrei Bobrov 2013 年 12 月 8 日

0 投票

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 件のコメント

Jakub
Jakub 2013 年 12 月 8 日
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 2013 年 12 月 8 日
編集済み: Andrei Bobrov 2013 年 12 月 9 日
see ADD
Jakub
Jakub 2013 年 12 月 9 日
what is ADD?
Andrei Bobrov
Andrei Bobrov 2013 年 12 月 9 日
see code after word ADD in my answer
Jakub
Jakub 2013 年 12 月 9 日
Thank you very much!

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeInterpolation についてさらに検索

質問済み:

2013 年 12 月 7 日

コメント済み:

2013 年 12 月 9 日

Community Treasure Hunt

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

Start Hunting!

Translated by