Interp2 a set of randomly sampled points?
5 次查看(过去 30 天)
显示 更早的评论
Hello All,
I am given the following information with no guarantee on any particular order or sample spacing (there could be holes. Roughly on a hexagonal grid, but not precicely...)
- Vectors of X and Y locations corresponding to a same-sized vector of complex values which I want to interpolate.
I've written the following test case which works great:
% Simple test case first to test handling of phasors:
test = [0 2*pi 0.1;
-0.1 0 -2*pi;
0 0 0;]
test = exp(1i*test);
[testX, testY] = meshgrid(1:3)
interpX = [1.5; 2.5; 2.1];
interpY = [1.5; 1.5; 2];
testInterp = interp2(testX,testY,test, interpX, interpY);
angle(testInterp)
% It works!
Unfortunately, I don't get my data in these nicely formatted and arranged square matricies. I get them in vectors, which don't have any particular order. I modified the above code to mimic this, and get errors complaining that the vectors are no longer monotonically increasing... I've tried sorting the data by x or y, but I keep getting the errors. Since the x coords are coupled with the y coords, I can't sort both x and y at the same time (does that make sense?). Any way, maybe the code below helps:
test = [0 2*pi 0.1;
-0.1 0 -2*pi;
0 0 0;]
test = exp(1i*test);
[testX, testY] = meshgrid(1:3)
interpX = [1.5; 2.5; 2.1];
interpY = [1.5; 1.5; 2];
combinedVector = [testX(:), testY(:), test(:)];
combinedVector = sortrows(combinedVector, [2 1]);
testInterp = interp2(combinedVector(:,1),combinedVector(:,2),combinedVector(:,3), interpX, interpY);
angle(testInterp)
Thoughts?? -Mike
采纳的回答
MikeStein
2013-7-25
3 个评论
dpb
2013-7-25
Jim has it basically between interp2 and triscattered
I don't know about the FEX submission but you can also look at
*griddata"
There's a decent background section in the doc's on interpolating scattered data that outlines at least the basics of the methods implemented
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!