function interpgui(arg1,arg2)
%INTERPGUI Behavior of interpolating functions.
% Demonstrates interpolation by a piecewise linear interpolant,
% a polynomial, a spline, and a shape preserving Hermite cubic.
% INTERPGUI(x,y) starts with a plot of y vs. x.
% INTERPGUI(y) starts with equally spaced x's.
% INTERPGUI(n) starts with y = zeros(1,n).
% INTERPGUI with no arguments starts with eight zeros.
% The interpolation points can be varied with the mouse.
% If x is specified, it remains fixed.
%
% See also SPLINETX, PCHIPTX, POLYINTERP, PIECELIN. if nargin == 0 | isnumeric(arg1) % Interpret arguments if nargin == 0
% interpgui with no arguments
n = 8;
x = 1:n;
y = zeros(1,n);
elseif length(arg1) == 1
% interpgui(n)
n = arg1;
x = 1:n;
y = zeros(1,n);
elseif nargin == 1
% interpgui(y)
n = length(arg1);
x = 1:n;
y = arg1(:)';
elseif length(arg1) == length(arg2)
% interpgui(x,y)
[x,k] = sort(arg1(:)');
y = arg2(k)';
else
error('Two arguments must have same length')
end
arg1 = []; % Initialize figure shg
clf reset
set(gcf,'doublebuffer','on', ...
'name','Interp gui', 'numbertitle','off', ...
'windowbuttondown',['interpgui(''move''); set(gcf,' ...
'''windowbuttonmotion'',''interpgui(''''move'''')'')'], ...
'windowbuttonup','set(gcf,''windowbuttonmotion'','''')'); % Initialize plots n = length(x);
h = diff(x);
u = zeros(1,128*(n+1));
j = 1:128;
s = (1+sin((j-65)/128*pi))/2;
u(j) = x(1)+(s-1)*h(1);
for k = 1:n-1
u(128*k+j) = x(k)+s*h(k);
end
u(128*n+j) = x(n)+s*h(n-1);
p = plot(x,y,'o',u,zeros(4,length(u)),'-');
ymin = min(y);
ymax = max(y);
ydel = ymax-ymin;
if ydel == 0; ydel = 1; end
axis([min(u) max(u) ymin-0.5*ydel ymax+0.5*ydel])
title('Interpolation') % Controls uicontrol('units','normal','pos',[.68 .13 .12 .18], ...
'style','frame','background','white')
F = {'linear','poly','spline','pchip'};
pos = [.69 .26 .09 .04];
vis = 0;
for k = 1:4
uicontrol('units','normal','pos',pos, ...
'style','check','string',F{k},'value',vis, ...
'background','white','foreground',get(p(k+1),'color'), ...
'callback','interpgui(''cb'')');
pos(2) = pos(2)-.04;
end
uicontrol('units','normal','pos',[.85 .01 .10 .06], ...
'style','push','string','close','tag','reset/close', ...
'callback','close(gcf)'); % Remember original data xfree = (nargin < 2);
set(gcf,'userdata',xfree)
set(gca,'userdata',{x,y})
end p = flipud(get(gca,'children'));
x = get(p(1),'xdata');
y = get(p(1),'ydata');
n = length(x);
h = diff(x);
u = zeros(1,128*(n+1));
j = 1:128;
s = (1+sin((j-65)/128*pi))/2;
u(j) = x(1)+(s-1)*h(1);
for k = 1:n-1
u(128*k+j) = x(k)+s*h(k);
end
u(128*n+j) = x(n)+s*h(n-1); if isequal(arg1,'reset') % Restore original data xy = get(gca,'userdata');
x = xy{1};
y = xy{2};
set(findobj('tag','reset/close'),'string','close', ...
'callback','close(gcf)'); elseif isequal(arg1,'move') % Respond to mouse motion z = get(gca,'currentpoint');
z = z(1,:);
p = flipud(get(gca,'children'));
e = abs(x-z(1));
k = min(find(e == min(e)));
xfree = get(gcf,'userdata');
if xfree
x(k) = z(1);
end
y(k) = z(2);
set(findobj('tag','reset/close'),'string','reset', ...
'callback','interpgui(''reset'')'); end ax = axis;
set(p(1),'xdata',x,'ydata',y)
set(p(2),'xdata',u,'ydata',piecelin(x,y,u));
set(p(3),'xdata',u,'ydata',polyinterp(x,y,u));
set(p(4),'xdata',u,'ydata',splinetx(x,y,u));
set(p(5),'xdata',u,'ydata',pchiptx(x,y,u));
axis(ax); % Visibility b = flipud(get(gcf,'children'));
onf = {'off','on'};
for k = 1:4
% Interpolants
set(p(k+1),'visible',onf{get(b(k+2),'value')+1})
end

Matlab interpgui的更多相关文章

  1. Matlab 绘制三维立体图(以地质异常体为例)

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  2. Matlab slice方法和包络法绘制三维立体图

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  3. Matlab 高斯_拉普拉斯滤波器处理医学图像

    前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...

  4. MATLAB中绘制质点轨迹动图并保存成GIF

    工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...

  5. linux下配置matlab运行环境(MCR)

    在安装好的matlab下有MCR(MatlabCompilerRuntime)在matlab2011/toolbox/compiler/deploy/glnxa64下找到MCRInstaller.zi ...

  6. EMD分析 Matlab 精华总结 附开源工具箱(全)

    前言: 本贴写于2016年12与15日,UK.最近在学习EMD(Empirical Mode Decomposition)和HHT(Hilbert-Huang Transform)多分辨信号处理,FQ ...

  7. Atitit MATLAB 图像处理 经典书籍attilax总结

    Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...

  8. Atitit MATLAB 图像处理attilax总结

    Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...

  9. Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结

    Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结 1.1. 边缘检测的基本方法Canny最常用了1 1.2. 编写matlab边缘检测代码, ...

随机推荐

  1. sort大法好———自定义的注意事项!!!!!!

    众所周知,在c++中,sort是一个非常好用的排序函数,方便使用.可自定义的特性,让众多oier如我不能自拔.但是在自定义时也有一些大坑需要注意(敲黑板),下面就是oi入门的第不知道多少课,大家认真听 ...

  2. 【插头DP】BZOJ1187- [HNOI2007]神奇游乐园

    [题目大意] 在n*m的网格中选一条回路,使权值和最大. [思路] 和之前裸的插头DP差不多,只不过现在回路不需要经过所有的格子.所以有以下几个注意点(具体看注释): (1)left和up插头相等的时 ...

  3. [SimpleOJ233]a xor b

    题目大意: 给你一个数列,求所有区间最大值和次大只异或的最大值. 思路: 很容易想到一个O(n^2)的暴力. O(n)的单调栈做法似乎也很好想,不过考场上没想出来. 对于数列上的某一个数,我们维护在它 ...

  4. mac安装redis拓展

    安装 下载源码 编译安装 添加拓展 添加权限重启 安装 在mac上安装了php7.1.7 php -m 查看安装的拓展,没有redis,以前可以brew install php71-redis简单命令 ...

  5. gridview 空数据绑定

    private void getDataBind() { DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Colu ...

  6. 用ldapsearch验证LDAP认证信息

    企业里面各种各样的系统,堆积多了以后帐号数不胜数,比较好的解决方案之一是用LDAP.不过Microsoft的ActiveDirectory认证是否成功需要有命令来进行验证,可以通过ldapsearch ...

  7. Spartan-6 FPGA Configuration

    These configuration pins serve as the interface for a number of different configuration modes: • JTA ...

  8. SQL SERVER 函数与SQL语法

    http://www.cnblogs.com/hoojo/archive/2011/07/16/2108129.html

  9. 关于npm run build 卡住不动的坑。。。

    起因:最近开发个项目使用的vue,有些功能需要生产版本放服务器上测试,这就出问题了..卡住了,不动了,还不报错 这是在vscode的终端里面,试了git hash,试了cmd , 试了powershe ...

  10. TortoiseSVN 图文使用教程

      1 安装及下载client 端 2 什么是SVN(Subversion)? 3 为甚么要用SVN? 4 怎么样在Windows下面建立SVN Repository? 5 建立一个Working目录 ...