I want to expand my matrix using interpolation. I followed the instructions but it shows some errors:
clc
clear
rw=0.10795;
n = linspace(-pi,pi,30);
m = linspace(rw,2.5,30);
[theta,r] = meshgrid(n,m);
[X,Y] = pol2cart(theta,r);
V = peaks(X,Y);
figure
surf(X,Y,V)
title('Original Sampling');
nn = linspace(-pi,pi,360);
mm = linspace(rw,2.5,200);
[thetaaa,rrr] = meshgrid(nn,mm);
[Xq,Yq] = pol2cart(thetaaa,rrr);
Vq = interp2(X,Y,V,Xq,Yq,'cubic');
figure
surf(Xq,Yq,Vq);
title('Cubic Interpolation Over Finer Grid');

 Respuesta aceptada

Walter Roberson
Walter Roberson el 19 de Sept. de 2015

1 voto

your input grid, X, Y, must be cuboid.
Leave your inputs the same, but change the command from interp2 to griddata (with the same arguments).
Also you will want to add 'edgecolor','none' to the surf() call.
griddata() is going to tell you that duplicate values have been averaged. I suspect -pi and +pi map to the same point with pol2cart. If you were to linspace() with 31 points and then delete the last then the overlap should disappear.

3 comentarios

Mahmood
Mahmood el 19 de Sept. de 2015
Editada: Walter Roberson el 19 de Sept. de 2015
Thanks a lot for your help, but it still not working. I correct the -pi and cuboid but I don't think the cubic method is the problem. It is the method for interpolation. Can you please present the corrected code to me? thanks a lot
clc
clear
rw=0.10795;
n = linspace(-pi,pi,31);
n(1) = [];
m = linspace(rw,2.5,30);
[theta,r] = meshgrid(n,m);
[X,Y] = pol2cart(theta,r);
V = peaks(X,Y);
figure
surf(X,Y,V)
title('Original Sampling');
nn = linspace(-pi,pi,360);
nn(1) = [];
mm = linspace(rw,2.5,200);
[thetaaa,rrr] = meshgrid(nn,mm);
[Xq,Yq] = pol2cart(thetaaa,rrr);
Vq = interp2(X,Y,V,Xq,Yq);
figure
surf(Xq,Yq,Vq);
Walter Roberson
Walter Roberson el 19 de Sept. de 2015
Editada: Walter Roberson el 19 de Sept. de 2015
rw=0.10795;
n = linspace(-pi,pi,31);
n(1) = [];
m = linspace(rw,2.5,30);
[theta,r] = meshgrid(n,m);
[X,Y] = pol2cart(theta,r);
V = peaks(X,Y);
figure
surf(X,Y,V, 'edgecolor','none')
title('Original Sampling');
nn = linspace(-pi,pi,360);
mm = linspace(rw,2.5,200);
[thetaaa,rrr] = meshgrid(nn,mm);
[Xq,Yq] = pol2cart(thetaaa,rrr);
Vq = griddata(X,Y,V,Xq,Yq,'cubic');
figure
surf(Xq,Yq,Vq, 'edgecolor', 'none');
title('Cubic Interpolation Over Finer Grid');
Mahmood
Mahmood el 20 de Sept. de 2015
Thanks a lot for your help. I really appreciate that.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Interpolation en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 19 de Sept. de 2015

Comentada:

el 20 de Sept. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by