function [Xi,Yi,Zi]=surfergriddata(X,Y,Z,varargin)
% Just like griddata but uses surfer instead. Default kringing
%
% Usage:
% [|[Xi,Yi],Zi]=surfergriddata(X,Y,Z,|[Xi,Yi],|[method])
%
% Example:
% X=randn(100,1);Y=randn(100,1);
% [Xi,Yi,Zi]=surfergriddata(X,Y,peaks(X,Y));
% surf(Xi,Yi,Zi)
%
% methods:
% InverseDistance, Kriging(default), MinCurvature, NaturalNeighbor
% NearestNeighbor, RadialBasis, Regression, Shepards, Triangulation
%
%
% See also GRIDDATA, MESHGRID
% Aslak Grinsted 2006
% revised by degang 2006
if nargin<=4
Xi=[]; Yi=[];
if nargin==4,method=varargin{1};end
elseif nargin>=5
Xi=varargin{1};Yi=varargin{2};
if nargin==6,method=varargin{3};end
end
if isempty(Xi)
NumCols=[]; NumRows=[];
xMin=[];xMax=[]; yMin=[];yMax=[];
else
if length(Xi(:))~=length(Yi(:)),[Xi,Yi]=meshgrid(Xi,Yi);end
[msg,X,Y,Z,Xi,Yi] = xyzchk(X,Y,Z,Xi,Yi);
if ~isempty(msg), error(msg); end
NumCols=(size(Xi,2)); NumRows=(size(Yi,1));
xMin=min(Xi(:)); xMax=max(Xi(:));
yMin=min(Yi(:)); yMax=max(Yi(:));
end
%methods:
methods={{'invdist','v4','inversedistance'},'kriging',{'mincurv','mincurvature'},...% 1 2 3
'shepards',{'natural','naturalneighbor'},{'nearest','nearestneighbor'},...% 4 5 6
'regression','radialbasis',{'linear','triangulation'},'movingaverage',...% 7 8 9 10
{'local','localpolynomial'},'datametric'};% 11 12
if exist('method','var')
method=optionchoose(method,methods);
else
method=2;% srfKriging;
end
%some enum values:
srfGridFmtxyz = 4;
srfDupAvg = [];% Z value is equal to the midrange of the duplicate Z values
srf=actxserver('surfer.application');
try
temp=[X,Y,Z];
save('~surferdata_temp.dat','temp','-ascii');
srf.DefaultFilePath = cd;
b= srf.GridData('~surferdata_temp.dat', [], [], [], [], ...% DataFile, xCol, yCol, zCol, ExclusionFilter,
srfDupAvg, [], [], ... %DupMethod, xDupTol, yDupTol,
NumCols, NumRows, xMin, xMax, yMin, yMax,...%NumCols, NumRows, xMin, xMax, yMin, yMax,
method, 0, [], [], ... % Algorithm, ShowReport, SearchEnable, SearchNumSectors,
[], [], [], [], [], [], ... %SearchRad1, SearchRad2, SearchAngle, SearchMinData, SearchDataPerSect, SearchMaxEmpty,
[], [], [], [],... % FaultFileName, BreakFileName, AnisotropyRatio, AnisotropyAngle,
[], [], [], [], [], [], ... %IDPower, IDSmoothing, KrigType, KrigDriftType, KrigStdDevGrid, KrigVariogram,
[], [], [], [], [],... %MCMaxResidual, MCMaxIterations, MCInternalTension, MCBoundaryTension, MCRelaxationFactor,
[], [], [], [], [], ... %ShepSmoothFactor, ShepQuadraticNeighbors, ShepWeightingNeighbors, ShepRange1, ShepRange2,
[], [], [], [], [], ... %RegrMaxXOrder, RegrMaxYOrder, RegrMaxTotalOrder, RBBasisType, RBRSquared,
'~surfergrid_temp.dat', srfGridFmtxyz, ... %OutGrid, OutFmt )
[], [], [], [], [],[]);% SearchMaxData, KrigStdDevFormat, DataMetric, LocalPolyOrder, LocalPolyPower, TriangleFileName
if ~b
warning('something went wrong in srf.griddata')
end
delete('~surferdata_temp.dat');
srf.Quit;
srf.delete;
catch
err=lasterror;
srf.Quit;
srf.delete;
rethrow(err);
end
temp=load('~surfergrid_temp.dat');
if isempty(NumCols),
NumRows=sum(temp(:,1)-temp(1)==0);NumCols=size(temp,1)/NumRows;
end
Xi=reshape(temp(:,1),[NumCols, NumRows])';
Yi=reshape(temp(:,2),[NumCols, NumRows])';
Zi=reshape(temp(:,3),[NumCols, NumRows])';
if nargout==1
Xi=Zi; clear Zi;
end
matlab_surfer
需积分: 11 58 浏览量
2015-02-04
15:39:58
上传
评论
收藏 109KB RAR 举报
榷垚
- 粉丝: 0
- 资源: 2
最新资源
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈