matlab回调函数小例子
matlab timer详解(实例)
MATLAB先天的多线程残疾,给编写实时程序带来了致命的打击。
一般情况只能按堆栈的形式,排队执行Matlab命令,可是无巧不成书,有时我们偏偏需要进行多线程和实时编程。
比如:1.我想实时更新一个电子表的时间,也就是每1s读取一次系统时间或者自动加1s2.我需要这个程序在10s后终止明显这些需要,使用一般的Matlab编程是没法或者说很难实现的。
还好Matlab自知在这方面亏欠大家太多,提供了唯一一个多线程的实现方法——Timer 对象一、Timer对象的创建T = timerT = timer('PropertyName1', PropertyValue1, 'PropertyName2', PropertyValue2,...)括号中的参数可以在创建Timer是给出,也可以通过以后的set/get命令设置和读取二、Timer属性参数1.属性设置(1)创建的时候直接赋值%创建一个Timer对象变量TaskTimer,并给出部分参数TaskTimer=timer(...'Name','Matlabsky',...'TimerFcn',@ExecuteTask,...'ErrorFcn',@ExecuteError,...'Period',1,...'ExecutionMode','fixedrate');(2)使用set/get设置和读取%创建一个默认的Timer对象TaskTimer=timerset(TaskTimer,'Name','Matlabsky','TimerFcn',@ExecutTask)get(TaskTimer,'Name')其实set/get的使用方法不只这个,还其他形式,特别是在同时设置多个句柄的多个属性时,特别方便,感兴趣的网友可以直接参考Matlab的帮助文档(3)使用结构体设置TaskTimer=timer='Matlabsky'TaskTimer.TimerFcn=@ExecutTask2.常用属性(下面是几个比较重要的,希望大家掌握)(1)ExecutionMode 执行的模式就是确定TimerFcn执行周期计算的始末点'singleShot' :只能执行一次,故Period属性不起作用,其他模式都可以执行多次'fixedSpacing' :上一次TimerFcn执行完毕时刻到下一次TimerFcn被加入队列时刻之间的间隔'fixedDelay' :上一次开始执行到下一次被加入队列之间的间隔'fixedRate' :前后两次被加入到执行语句队列时刻之间的间隔(2)Period 时间间隔(执行周期)也就是每个Period执行一次TimerFcn,执行周期到底指的是哪两个时刻之间的间隔由ExecutionMode决定(3)StartDelay 启动时延从启动Timer开始到第一次把TimerFcn的加入到Matlab的执行语句队列中去的时延, 默认值为0s(4)TasksToExecute 执行次数TimerFcn被执行的次数,默认为1次,设置多次时需要设置执行周期Period(5)TimerFcn Timer函数是Timer对象的核心,Timer的多线就是通过执行这个TimerFcn来实现的,也是Timer对象的必选参数当然还有其它属性,但是相对来说比较次要,更详细的说明,感兴趣网友可以自己查看MATLAB帮助文档三、回调函数callback1.callback的建立Timer对象的回调函数有TimerFcn、ErrorFcn、StartFcn和StopFcn,其中TimerFcn是必选的Timer的所有回调函数callback,至少有两个输入参数obj和event,其经典格式为1.function my_callback_fcn(obj,event,p1, p2)2.%by dynamic3.%see also 4.%20092.155.%6.%obj和event为必选输入参数7.%8.%obj就是前面创建的Timer对象,它包含着Timer的所有参数9.%10.%event是一个结构体,包含Type和Data两个字段,Type保存的是当前的Timer对象执行的时间,比如StartFcn、StopFcn等11.%12.%而Data还是一个结构体,包含time一个字段,保存的是执行该事件的系统时间13.%14.%所以event的使用是event.Type获取Timer到底在执行哪个事件,event.Data.time或者执行该时间的系统时间15.%16.%p1,p2...等是其它自定义的输入参数,根据需要在自己添加复制代码2.回调函数的属性值1.回调函数属性值2.function myfcn(obj,event) set(T,'StartFcn','myfcn')或者T.StartFcn='myfcn'(下同)3.function myfcn(obj,event) set(T,'StartFcn',@myfcn)(同上)4.function myfcn(obj,event,p1,p2) set(T,'StartFcn',{'myfcn',p1,p2})或者T.StartFcn={'myfcn',p1,p2}(下同)5.function myfcn(obj,event,p1,p2) set(T,'StartFcn',{@myfcn,p1,p2})(同上)复制代码3.回调函数实例1.function TimerFcn_callback(obj,event,var)2.3.txt=' event occurred at ';4.5.event_type = event.Type;%获取当前事件6.event_time = datestr(event.Data.time);7.8.msg = [event_type txt event_time];9.disp('Hello it's Matlabsky Timer Object Demo')10.disp('Now! Begin...')11.disp(msg)12.13.x=2*pi*[-1:0.01:1];14.y=var*sin(var*x)+var15.plot(x,y)复制代码四、Timer对象应用实例1.2.function matlabsky_timer_demo3.%4.%by dynamic5.%see also 6.%2009.1.237.%8.clc9.%创建Timer对象10.T = timer('TimerFcn',@TimerFcn, 'StartDelay',10,'StartFcn',@StartFcn);11.%启动Timer12.start(T);13.%开始循环14.while erdata=='f'15. disp('Love Matlab Love Matlabsky——Timer Object Demo');16. pause(1)17.end18.%终止Timer19.stop(T);20.21.function TimerFcn(obj, event)22.%10s后终止程序erdata='t';24.disp(['the BeiJing time is ' datestr(event.Data.time)])25.disp('10s Has Escaped, Following The Orde of TimerFcn, Now I Have To StopThis Progam!')26.27.function StartFcn(obj,event)erdata='f';29.disp(['the BeiJing time is ' datestr(event.Data.time)])30.disp('The Timer Object Demo Begin Now!')复制代码程序运行结果为1.the BeiJing time is 17-Feb-2009 13:36:052.The Timer Object Demo Begin Now!3.Love Matlab Love Matlabsky——Timer Object Demo4.Love Matlab Love Matlabsky——Timer Object Demo5.Love Matlab Love Matlabsky——Timer Object Demo6.Love Matlab Love Matlabsky——Timer Object Demo7.Love Matlab Love Matlabsky——Timer Object Demo8.Love Matlab Love Matlabsky——Timer Object Demo9.Love Matlab Love Matlabsky——Timer Object Demo10.Love Matlab Love Matlabsky——Timer Object Demo11.Love Matlab Love Matlabsky——Timer Object Demo12.Love Matlab Love Matlabsky——Timer Object Demo13.the BeiJing time is 17-Feb-2009 13:36:1514.10s Has Escaped, Following The Orde of TimerFcn, Now I Have To Stop ThisProgam!复制代码这里还一个Timer对象在【股票浏览器】GUI中的应用的实例,感兴趣的可以看看/thread-656-1-1.html五、与Timer相关的其它函数timer 创建Timer对象set/get 设置/获取Timer属性start 启动Timerstartat 在指定时间启动Timerstop 终止Timerdisp 显示Timer所有属性timerfind 找出内存中可见的Timertimerfindall 找出内存中的所有Timerwait 等待Timer执行完了以后在执行后面的命令行delete 从内存中删除Timer。
matlab的函数类型
matlab的函数类型作者:XLFinance 来源:XLFinance 打印邮寄返回匿名函数匿名函数的作用在于可以快速生成简单的函数,而不需创建m文件,匿名函数通常在命令区或函数、脚本中运行时创建。
匿名函数的生成语法是fhandle = @(arglist) expr,其中expr代表函数体,arglist是逗号分隔的参数列表。
符号@代表创建函数句柄,匿名函数必须使用此符号,匿名函数的执行语法是:fhandle(arg1, arg2, ..., argN),fhandle为匿名函数句柄名称。
简单的匿名函数示例:sqr = @(x) x.^2,该匿名函数计算给定参数x的平方值,执行可以使用 a = sqr(5)形式。
再如:sumAxBy = @(x, y) (A*x + B*y)(使用多个参数),t = @() datestr(now)(无参数),A = {@(x)x.^2, @(y)y+10, @(x,y)x.^2+y+10}(匿名函数数组)。
多重匿名函数等同于:g = @(c) (quad(@(x) (x.^2 + c*x + 1), 0, 1));其中@(x) (x.^2 + c*x + 1)为第一重匿名函数,而后作为参数继续传递给积分函数。
再如求解函数a*exp(x)+b*x=0,则使用在m函数文件调用匿名函数:function f0 = test(a, b, x0)f0=fsolve(@(x)(a*exp(x)+b*x),x0);主函数任意m文件中的第一个函数称呼为主函数,主函数之后可能附随多个子函数。
主函数是在命令区或其它函数中可调用的唯一一个该m文件中所定义的函数。
子函数一个m文件中可能包含多个函数。
主函数之外的函数都称为子函数,这些子函数只能为主函数或同一m文件中的其它子函数可见。
例如:function [avg, med] = newstats(u) % 主函数n = length(u);avg = mean(u, n);med = median(u, n);function a = mean(v, n) % 子函数1a = sum(v)/n;function m = median(v, n) % 子函数2w = sort(v);if rem(n, 2) == 1m = w((n+1) / 2);elsem = (w(n/2) + w(n/2+1)) / 2;end而即便在相同m文件中,子函数内定义的变量也不可为其它子函数所使用,除非定义为全局或作为参数传递。
MATLAB函数大全(MATLAB函数总集,史上最全)
MATLAB函数大全代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一A aabs 绝对值、模、字符的ASCII码值acos 反余弦acosh 反双曲余弦acot 反余切acoth 反双曲余切acsc 反余割acsch 反双曲余割align 启动图形对象几何位置排列工具all 所有元素非零为真angle 相角ans 表达式计算结果的缺省变量名any 所有元素非全零为真area 面域图argnames 函数M文件宗量名asec 反正割asech 反双曲正割asin 反正弦asinh 反双曲正弦assignin 向变量赋值atan 反正切atan2 四象限反正切atanh 反双曲正切autumn 红黄调秋色图阵axes 创建轴对象的低层指令axis 控制轴刻度和风格的高层指令B bbar 二维直方图bar3 三维直方图bar3h 三维水平直方图barh 二维水平直方图base2dec X进制转换为十进制bin2dec 二进制转换为十进制blanks 创建空格串代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一bone 蓝色调黑白色图阵box 框状坐标轴break while 或for 环中断指令brighten 亮度控制C ccapture (3版以前)捕获当前图形cart2pol 直角坐标变为极或柱坐标cart2sph 直角坐标变为球坐标cat 串接成高维数组caxis 色标尺刻度cd 指定当前目录cdedit 启动用户菜单、控件回调函数设计工具cdf2rdf 复数特征值对角阵转为实数块对角阵ceil 向正无穷取整cell 创建元胞数组cell2struct 元胞数组转换为构架数组celldisp 显示元胞数组内容cellplot 元胞数组内部结构图示char 把数值、符号、内联类转换为字符对象chi2cdf 分布累计概率函数chi2inv 分布逆累计概率函数chi2pdf 分布概率密度函数chi2rnd 分布随机数发生器chol Cholesky分解clabel 等位线标识cla 清除当前轴class 获知对象类别或创建对象clc 清除指令窗clear 清除内存变量和函数clf 清除图对象clock 时钟colorcube 三浓淡多彩交叉色图矩阵colordef 设置色彩缺省值colormap 色图代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一colspace 列空间的基close 关闭指定窗口colperm 列排序置换向量comet 彗星状轨迹图comet3 三维彗星轨迹图compass 射线图compose 求复合函数cond (逆)条件数condeig 计算特征值、特征向量同时给出条件数condest 范 -1条件数估计conj 复数共轭contour 等位线contourf 填色等位线contour3 三维等位线contourslice 四维切片等位线图conv 多项式乘、卷积cool 青紫调冷色图copper 古铜调色图cos 余弦cosh 双曲余弦cot 余切coth 双曲余切cplxpair 复数共轭成对排列csc 余割csch 双曲余割cumsum 元素累计和cumtrapz 累计梯形积分cylinder 创建圆柱D ddblquad 二重数值积分deal 分配宗量deblank 删去串尾部的空格符dec2base 十进制转换为X进制dec2bin 十进制转换为二进制代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一dec2hex 十进制转换为十六进制deconv 多项式除、解卷delaunay Delaunay 三角剖分del2 离散Laplacian差分demo Matlab演示det 行列式diag 矩阵对角元素提取、创建对角阵diary Matlab指令窗文本内容记录diff 数值差分、符号微分digits 符号计算中设置符号数值的精度dir 目录列表disp 显示数组display 显示对象内容的重载函数dlinmod 离散系统的线性化模型dmperm 矩阵Dulmage-Mendelsohn 分解dos 执行DOS 指令并返回结果double 把其他类型对象转换为双精度数值drawnow 更新事件队列强迫Matlab刷新屏幕dsolve 符号计算解微分方程E eecho M文件被执行指令的显示edit 启动M文件编辑器eig 求特征值和特征向量eigs 求指定的几个特征值end 控制流FOR等结构体的结尾元素下标eps 浮点相对精度error 显示出错信息并中断执行errortrap 错误发生后程序是否继续执行的控制erf 误差函数erfc 误差补函数erfcx 刻度误差补函数erfinv 逆误差函数errorbar 带误差限的曲线图etreeplot 画消去树代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一eval 串演算指令evalin 跨空间串演算指令exist 检查变量或函数是否已定义exit 退出Matlab环境exp 指数函数expand 符号计算中的展开操作expint 指数积分函数expm 常用矩阵指数函数expm1 Pade法求矩阵指数expm2 Taylor法求矩阵指数expm3 特征值分解法求矩阵指数eye 单位阵ezcontour 画等位线的简捷指令ezcontourf 画填色等位线的简捷指令ezgraph3 画表面图的通用简捷指令ezmesh 画网线图的简捷指令ezmeshc 画带等位线的网线图的简捷指令ezplot 画二维曲线的简捷指令ezplot3 画三维曲线的简捷指令ezpolar 画极坐标图的简捷指令ezsurf 画表面图的简捷指令ezsurfc 画带等位线的表面图的简捷指令F ffactor 符号计算的因式分解feather 羽毛图feedback 反馈连接feval 执行由串指定的函数fft 离散Fourier变换fft2 二维离散Fourier变换fftn 高维离散Fourier变换fftshift 直流分量对中的谱fieldnames 构架域名figure 创建图形窗代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一fill3 三维多边形填色图find 寻找非零元素下标findobj 寻找具有指定属性的对象图柄findstr 寻找短串的起始字符下标findsym 机器确定内存中的符号变量finverse 符号计算中求反函数fix 向零取整flag 红白蓝黑交错色图阵fliplr 矩阵的左右翻转flipud 矩阵的上下翻转flipdim 矩阵沿指定维翻转floor 向负无穷取整flops 浮点运算次数flow Matlab提供的演示数据fmin 求单变量非线性函数极小值点(旧版)fminbnd 求单变量非线性函数极小值点fmins 单纯形法求多变量函数极小值点(旧版)fminunc 拟牛顿法求多变量函数极小值点fminsearch 单纯形法求多变量函数极小值点fnder 对样条函数求导fnint 利用样条函数求积分fnval 计算样条函数区间内任意一点的值fnplt 绘制样条函数图形fopen 打开外部文件for 构成for环用format 设置输出格式fourier Fourier 变换fplot 返函绘图指令fprintf 设置显示格式fread 从文件读二进制数据fsolve 求多元函数的零点full 把稀疏矩阵转换为非稀疏阵funm 计算一般矩阵函数funtool 函数计算器图形用户界面fzero 求单变量非线性函数的零点G g代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/ 信誉至上,服务第一gamma 函数gammainc 不完全 函数gammaln 函数的对数gca 获得当前轴句柄gcbo 获得正执行"回调"的对象句柄gcf 获得当前图对象句柄gco 获得当前对象句柄geomean 几何平均值get 获知对象属性getfield 获知构架数组的域getframe 获取影片的帧画面ginput 从图形窗获取数据global 定义全局变量gplot 依图论法则画图gradient 近似梯度gray 黑白灰度grid 画分格线griddata 规则化数据和曲面拟合gtext 由鼠标放置注释文字guide 启动图形用户界面交互设计工具H hharmmean 调和平均值help 在线帮助helpwin 互式在线帮助helpdesk 打开超文本形式用户指南hex2dec 十六进制转换为十进制hex2num 十六进制转换为浮点数hidden 透 视和消隐开关hilb Hilbert矩阵hist 频数计算或频数直方图histc 端点定位频数直方图histfit 带正态拟合的频数直方图hold 当前图上重画的切换开关horner 分解成嵌套形式hot 黑红黄白颜色图代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一hsv 饱和颜色图I iif-else-elseif 条件分支结构ifft 离散Fourier反变换ifft2 二维离散Fourier反变换ifftn 高维离散Fourier反变换ifftshift 直流分量对中的谱的反操作ifourier Fourier反变换i, j 缺省的"虚单元"变量ilaplace Laplace反变换imag 复数虚部image 显示图象imagesc 显示亮度图象imfinfo 获取图形文件信息imread 从文件读取图象imwrite 把imwrite 把图象写成文件ind2sub 单下标转变为多下标inf 无穷大info MathWorks公司网点地址inline 构造内联函数对象inmem 列出内存中的函数名input 提示用户输入inputname 输入宗量名int 符号积分int2str 把整数数组转换为串数组interp1 一维插值interp2 二维插值interp3 三维插值interpn N维插值interpft 利用FFT插值intro Matlab自带的入门引导inv 求矩阵逆invhilb Hilbert矩阵的准确逆ipermute 广义反转置isa 检测是否给定类的对象代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一ischar 若是字符串则为真isequal 若两数组相同则为真isempty 若是空阵则为真isfinite 若全部元素都有限则为真isfield 若是构架域则为真isglobal 若是全局变量则为真ishandle 若是图形句柄则为真ishold 若当前图形处于保留状态则为真isieee 若计算机执行IEEE规则则为真isinf 若是无穷数据则为真isletter 若是英文字母则为真islogical 若是逻辑数组则为真ismember 检查是否属于指定集isnan 若是非数则为真isnumeric 若是数值数组则为真isobject 若是对象则为真isprime 若是质数则为真isreal 若是实数则为真isspace 若是空格则为真issparse 若是稀疏矩阵则为真isstruct 若是构架则为真isstudent 若是Matlab学生版则为真iztrans 符号计算Z反变换J j , K kjacobian 符号计算中求Jacobian 矩阵jet 蓝头红尾饱和色jordan 符号计算中获得 Jordan标准型keyboard 键盘获得控制权kron Kronecker乘法规则产生的数组L llaplace Laplace变换代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一lasterr 显示最新出错信息lastwarn 显示最新警告信息leastsq 解非线性最小二乘问题(旧版)legend 图形图例lighting 照明模式line 创建线对象lines 采用plot 画线色linmod 获连续系统的线性化模型linmod2 获连续系统的线性化精良模型linspace 线性等分向量ln 矩阵自然对数load 从MAT文件读取变量log 自然对数log10 常用对数log2 底为2的对数loglog 双对数刻度图形logm 矩阵对数logspace 对数分度向量lookfor 按关键字搜索M文件lower 转换为小写字母lsqnonlin 解非线性最小二乘问题lu LU分解M mmad 平均绝对值偏差magic 魔方阵maple &nb, sp; 运作 Maple格式指令mat2str 把数值数组转换成输入形态串数组material 材料反射模式max 找向量中最大元素mbuild 产生EXE文件编译环境的预设置指令mcc 创建MEX或EXE文件的编译指令mean 求向量元素的平均值median 求中位数menuedit 启动设计用户菜单的交互式编辑工具代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一mesh 网线图meshz 垂帘网线图meshgrid 产生"格点"矩阵methods 获知对指定类定义的所有方法函数mex 产生MEX文件编译环境的预设置指令mfunlis 能被mfun计算的MAPLE经典函数列表mhelp 引出 Maple的在线帮助min 找向量中最小元素mkdir 创建目录mkpp 逐段多项式数据的明晰化mod 模运算more 指令窗中内容的分页显示movie 放映影片动画moviein 影片帧画面的内存预置mtaylor 符号计算多变量Taylor级数展开N nndims 求数组维数NaN 非数(预定义)变量nargchk 输入宗量数验证nargin 函数输入宗量数nargout 函数输出宗量数ndgrid 产生高维格点矩阵newplot 准备新的缺省图、轴nextpow2 取最接近的较大2次幂nnz 矩阵的非零元素总数nonzeros 矩阵的非零元素norm 矩阵或向量范数normcdf 正态分布累计概率密度函数normest 估计矩阵2范数norminv 正态分布逆累计概率密度函数normpdf 正态分布概率密度函数normrnd 正态随机数发生器notebook 启动Matlab和Word的集成环境null 零空间代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一num2str 把非整数数组转换为串numden 获取最小公分母和相应的分子表达式nzmax 指定存放非零元素所需内存O oode1 非Stiff 微分方程变步长解算器ode15s Stiff 微分方程变步长解算器ode23t 适度Stiff 微分方程解算器ode23tb Stiff 微分方程解算器ode45 非Stiff 微分方程变步长解算器odefile ODE 文件模板odeget 获知ODE 选项设置参数odephas2 ODE 输出函数的二维相平面图odephas3 ODE 输出函数的三维相空间图odeplot ODE 输出函数的时间轨迹图odeprint 在Matlab指令窗显示结果odeset 创建或改写 ODE选项构架参数值ones 全1数组optimset 创建或改写优化泛函指令的选项参数值orient 设定图形的排放方式orth 值空间正交化P ppack 收集Matlab内存碎块扩大内存pagedlg 调出图形排版对话框patch 创建块对象path 设置Matlab搜索路径的指令pathtool 搜索路径管理器pause 暂停pcode 创建预解译P码文件pcolor 伪彩图peaks Matlab提供的典型三维曲面permute 广义转置代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一pi (预定义变量)圆周率pie 二维饼图pie3 三维饼图pink 粉红色图矩阵pinv 伪逆plot 平面线图plot3 三维线图plotmatrix 矩阵的散点图plotyy 双纵坐标图poissinv 泊松分布逆累计概率分布函数poissrnd 泊松分布随机数发生器pol2cart 极或柱坐标变为直角坐标polar 极坐标图poly 矩阵的特征多项式、根集对应的多项式poly2str 以习惯方式显示多项式poly2sym 双精度多项式系数转变为向量符号多项式polyder 多项式导数polyfit 数据的多项式拟合polyval 计算多项式的值polyvalm 计算矩阵多项式pow2 2的幂ppval 计算分段多项式pretty 以习惯方式显示符号表达式print 打印图形或SIMULINK模型printsys 以习惯方式显示有理分式prism 光谱色图矩阵procread 向MAPLE输送计算程序profile 函数文件性能评估器propedit 图形对象属性编辑器pwd 显示当前工作目录Q qquad 低阶法计算数值积分quad8 高阶法计算数值积分(QUADL)quit 推出Matlab 环境代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一quiver 二维方向箭头图quiver3 三维方向箭头图R rrand 产生均匀分布随机数randn 产生正态分布随机数randperm 随机置换向量range 样本极差rank 矩阵的秩rats 有理输出rcond 矩阵倒条件数估计real 复数的实部reallog 在实数域内计算自然对数realpow 在实数域内计算乘方realsqrt 在实数域内计算平方根realmax 最大正浮点数realmin 最小正浮点数rectangle 画"长方框"rem 求余数repmat 铺放模块数组reshape 改变数组维数、大小residue 部分分式展开return 返回ribbon 把二维曲线画成三维彩带图rmfield 删去构架的域roots 求多项式的根rose 数扇形图rot90 矩阵旋转90度rotate 指定的原点和方向旋转rotate3d 启动三维图形视角的交互设置功能round 向最近整数圆整rref 简化矩阵为梯形形式rsf2csf 实数块对角阵转为复数特征值对角阵rsums Riemann和S s代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一save 把内存变量保存为文件scatter 散点图scatter3 三维散点图sec 正割sech 双曲正割semilogx X轴对数刻度坐标图semilogy Y轴对数刻度坐标图series 串联连接set 设置图形对象属性setfield 设置构架数组的域setstr 将ASCII码转换为字符的旧版指令sign 根据符号取值函数signum 符号计算中的符号取值函数sim 运行SIMULINK模型simget 获取SIMULINK模型设置的仿真参数simple 寻找最短形式的符号解simplify 符号计算中进行简化操作simset 对SIMULINK模型的仿真参数进行设置simulink 启动SIMULINK模块库浏览器sin 正弦sinh 双曲正弦size 矩阵的大小slice 立体切片图solve 求代数方程的符号解spalloc 为非零元素配置内存sparse 创建稀疏矩阵spconvert 把外部数据转换为稀疏矩阵spdiags 稀疏对角阵spfun 求非零元素的函数值sph2cart 球坐标变为直角坐标sphere 产生球面spinmap 色图彩色的周期变化spline 样条插值spones 用1置换非零元素sprandsym 稀疏随机对称阵sprank 结构秩spring 紫黄调春色图代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一sprintf 把格式数据写成串spy 画稀疏结构图sqrt 平方根sqrtm 方根矩阵squeeze 删去大小为1的"孤维"sscanf 按指定格式读串stairs 阶梯图std 标准差stem 二维杆图step 阶跃响应指令str2double 串转换为双精度值str2mat 创建多行串数组str2num 串转换为数strcat 接成长串strcmp 串比较strjust 串对齐strmatch 搜索指定串strncmp 串中前若干字符比较strrep 串替换strtok 寻找第一间隔符前的内容struct 创建构架数组struct2cell 把构架转换为元胞数组strvcat 创建多行串数组sub2ind 多下标转换为单下标subexpr 通过子表达式重写符号对象subplot 创建子图subs 符号计算中的符号变量置换subspace 两子空间夹角sum 元素和summer 绿黄调夏色图superiorto 设定优先级surf 三维着色表面图surface 创建面对象surfc 带等位线的表面图surfl 带光照的三维表面图surfnorm 空间表面的法线svd 奇异值分解代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一svds 求指定的若干奇异值switch-case-otherwise 多分支结构sym2poly 符号多项式转变为双精度多项式系数向量symmmd 对称最小度排序symrcm 反向Cuthill-McKee排序syms 创建多个符号对象T ttan 正切tanh 双曲正切taylortool 进行Taylor逼近分析的交互界面text 文字注释tf 创建传递函数对象tic 启动计时器title 图名toc 关闭计时器trapz 梯形法数值积分treelayout 展开树、林treeplot 画树图tril 下三角阵trim 求系统平衡点trimesh 不规则格点网线图trisurf 不规则格点表面图 triu 上三角阵 try-catch 控制流中的Try-catch结构 type 显示M文件U uuicontextmenu 创建现场菜单uicontrol 创建用户控件uimenu 创建用户菜单unmkpp 逐段多项式数据的反明晰化unwrap 自然态相角upper 转换为大写字母V v代充全国移动、联通、电信话费、腾讯QQ业务、网游点卡 淘宝店址:/信誉至上,服务第一var 方差varargin 变长度输入宗量varargout 变长度输出宗量vectorize 使串表达式或内联函数适于数组运算ver 版本信息的获取view 三维图形的视角控制voronoi V oronoi多边形vpa 任意精度(符号类)数值W wwarning 显示警告信息what 列出当前目录上的文件whatsnew 显示Matlab中 Readme文件的内容which 确定函数、文件的位置while 控制流中的While环结构white 全白色图矩阵whitebg 指定轴的背景色who 列出内存中的变量名whos 列出内存中变量的详细信息winter 蓝绿调冬色图workspace 启动内存浏览器X x , Y y , Z zxlabel X轴名xor 或非逻辑yesinput 智能输入指令ylabel Y轴名zeros 全零数组zlabel Z轴名zoom 图形的变焦放大和缩小ztrans 符号计算Z变换。
MatlabGUI常见回调函数
MatlabGUI常见回调函数
callBack
最常⽤的就是它。
如果控件是按钮,那点击按钮时,则按钮下的Callback就会执⾏;如果是滑块,则拖动滑块时,滑块名下的callback 就会执⾏;总之,就是对控件默认操作时,matlab后台就会⾃动调⽤它名下的的callback。
正常⽤途,全放在callback下就够了。
如果其他的,实在是想知道,了解⼀下也未尝不可。
ButtonDownFcn
就是⿏标在它(代指各种控件)上⾯点击⼀下,你放在这个函数名下的代码就会执⾏。
(ps:按钮的callback也是点击,所以会覆盖掉这个buttondownfcn。
)
CreateFcn
顾名思义,在⽣成这个控件,显⽰之前,执⾏你放在这个函数名下的代码;
DeleteFcn
⼀样。
在控件要销毁,但是被毁灭之前执⾏这个函数名下的代码。
貌似“真的要退出吗”这⼀类就是写在这⾥。
KeyPressFcn
当前控件获得焦点且有按键按下时执⾏。
(什么是焦点?就是这个控件被⿏标点了(或者是tab轮选到了)。
你打开⼀个记事本,然后再点这个⽹页,再随便按⼏个按键,记事本上有字不?没有对吧。
因为它没获得焦点,所以你的按键它不会反应的。
只有你最后再点它⼀下,再按⼏个按键,结果怎么样?有字了吧?)这⾥的KeyPressFcn也是⼀样的道理。
⼀般在这下⾯的代码还会判断下按键是什么,然后执⾏相应的代码。
SelectionChangeFcn
在群按钮组件中,改变选择时,所执⾏的函数。
matlab简易计算器设计步骤与回调函数设计说明
简易算术计算器的设计一、算术计算器的功能:能进行简单的加、减、乘、除法运算,输入文本框显示为常量多项式,输出文本框显示为精确到小数点后十位的数值。
计算器包含十个数字键0~9、小数点键“.”、小括号键“(”“)”、运算符号、清屏键、退格键、退出键等。
二、设计思路:每按下一个数字键或者符号键的时候,利用get(handles.edit1,'string')获取当前输入文本框edit1的string属性,并通过字符串合并函数strcat()将当前输入文本框edit1的字符型string属性与按键的字符型string属性合并成字符串,然后利用属性设置函数set(); 将合并后的字符串返回到输入文本框edit1的string属性。
当输入结束,用户按下等号的时候,采用x=get(handles.edit1,'string')获取当前输入文本框edit1的string属性,然后利用字符串执行命令y1=eval(x)计算输入文本框的表达式,得到的结果是字符型常量;然后利用字符串输出格式控制函数y=sprintf('%.10f',y1)使输出结果精确到小数点后十位;最后利用属性设置函数set(handles.edit2,'string',y)将转换后的字符串返回到输出文本框edit2的string 属性。
三、设计步骤:1、运行matlab 7.13版,进入主界面。
2、点击工具栏上的GUIDE图标进入GUI开发环境。
3、创建控件:Push Button包括数字0~9、运算符“+ - ×÷”、功能键等十九个,输入和动态静态文本框Edit Text,显示文字的静态文本框Static Text四个等。
4、对控件单击右键弹出菜单,选择Property Inspector,设置控件属性。
控件属性表text text1 制作:***16pointsboldon0.8310.8160.7840 0 1 text2 Inputtext3 Outputtext4 算术计算器200.7490.749editedit1 空白字符串10pointson 1 1 1 0 0 0 edit2 空白字符串5、选择工具栏上的Align Objects按键,调整控件布局。
matlab十个简单案例编写
matlab十个简单案例编写1. 求解线性方程组线性方程组是数学中常见的问题之一,而MATLAB提供了用于求解线性方程组的函数。
例如,我们可以使用"linsolve"函数来求解以下线性方程组:2x + 3y = 74x - 2y = 2代码如下所示:A = [2, 3; 4, -2];B = [7; 2];X = linsolve(A, B);disp(X);解释:上述代码定义了一个2x2的矩阵A和一个2x1的矩阵B,分别表示线性方程组的系数矩阵和常数向量。
然后,使用linsolve函数求解线性方程组,结果存储在X中,并通过disp函数打印出来。
运行代码后,可以得到x=2和y=1的解。
2. 求解非线性方程除了线性方程组外,MATLAB还可以用于求解非线性方程。
例如,我们可以使用"fzero"函数求解以下非线性方程:x^2 + 2x - 3 = 0代码如下所示:fun = @(x) x^2 + 2*x - 3;x0 = 0;x = fzero(fun, x0);disp(x);解释:上述代码定义了一个匿名函数fun,表示非线性方程。
然后,使用fzero函数传入fun和初始值x0来求解非线性方程的根,并通过disp函数打印出来。
运行代码后,可以得到x=1的解。
3. 绘制函数图像MATLAB提供了强大的绘图功能,可以帮助我们可视化函数的形状和特征。
例如,我们可以使用"plot"函数绘制以下函数的图像:y = cos(x)代码如下所示:x = linspace(0, 2*pi, 100);y = cos(x);plot(x, y);解释:上述代码首先使用linspace函数生成一个从0到2π的100个等间距点的向量x,然后计算对应的cos值,并存储在向量y中。
最后,使用plot函数将x和y作为横纵坐标绘制出函数图像。
运行代码后,可以看到cos函数的周期性波动图像。
matlab中callback的用法
matlab中callback的用法摘要:1.Matlab 中回调函数的概念2.Callback 函数的用法3.Callback 函数的实例正文:Matlab 是一种广泛使用的数学软件,它提供了丰富的函数库和强大的编程能力,使得用户可以方便地进行各种数学计算和数据分析。
在Matlab 中,回调函数是一种非常有用的函数类型,它允许用户在函数中执行其他函数,从而实现更复杂的操作。
下面我们将详细介绍Matlab 中回调函数的用法。
回调函数的概念回调函数,顾名思义,是一种可以调用其他函数的函数。
在Matlab 中,回调函数通常用于实现某种特定的操作,例如在绘图时添加标注、在计算中进行数据筛选等。
回调函数的用法非常灵活,用户可以根据需要定义自己的回调函数,以实现更复杂的功能。
Callback 函数的用法在Matlab 中,回调函数的用法非常简单。
通常,用户需要首先定义一个回调函数,然后在另一个函数中调用这个回调函数。
具体来说,回调函数的定义和使用可以分为以下几个步骤:1.定义回调函数:用户需要首先定义一个回调函数,这个函数可以接受输入参数,并执行相应的操作。
例如,我们可以定义一个回调函数,用于在绘图时添加标注:```matlabfunction my_callback_function(x, y)% 在这里执行添加标注的操作% 例如:text(x, y, "This is an annotation");end```2.调用回调函数:在定义回调函数后,用户可以在另一个函数中调用这个回调函数。
通常,这种调用是通过将回调函数作为一个参数传递给另一个函数来实现的。
例如,我们可以在绘图函数中调用上面定义的回调函数,以在绘图时添加标注:```matlabfunction plot_with_annotation(x, y, callback_function)% 在这里执行绘图操作% 例如:plot(x, y);% 调用回调函数,以在图中添加标注callback_function(x, y);end```3.使用回调函数:最后,用户可以调用绘图函数,并传入回调函数作为参数,以实现在绘图时添加标注的功能:```matlab% 调用绘图函数,并传入回调函数作为参数plot_with_annotation(1, 2, my_callback_function);```Callback 函数的实例下面,我们提供一个回调函数的实例,用于在计算中进行数据筛选。
Matlab GUI 菜单和工具栏常用操作
Matlab GUI 常用操作菜单1.编辑菜单打开GUIDE,选择工具栏上面的菜单编辑按钮2.添加菜单回调函数(callback)菜单编辑完成保存后,在fig对应的m文件中会自动生成菜单的回调函数声明例如菜单tag名为menuFilePrint,则对应的callback函数为:function menuFilePrint_Callback(hObject, eventdata, handles)可以在该函数内添加代码实现功能。
3.菜单项访问获取菜单句柄在matlab的函数中要对某个菜单进行访问,必须获得该菜单的句柄。
如果是在菜单的回调函数里面,hObject就是该菜单的句柄;如果是在其他的函数里面要获得某一菜单的句柄,比如选中工具栏上的ZoomIn按钮,按钮处于被按下状态,同时要设置对应菜单项view->Zoom-Zoom In 为选中状态,如下图:这里要在按钮“ZoomIn”的callback函数里面实现对菜单menuViewZoomIn的状态设置。
首先得获得菜单的句柄:% first we must get the handle of menuZoomInhFigChildren = allchild(gcf);% menuView handlehMenuView = findobj(hFigChildren,'Tag','menuView');hvc = allchild(hMenuView);% menuViewZoomhViewZoom = findobj(hvc,'Tag','menuViewZoom');hvzc = allchild(hViewZoom);%menuZoomIn handlehZoomIn = findobj(hvzc,'Tag', 'menuZoomIn');获取设置菜单状态得到菜单的句柄后就可以得到菜单当前的状态了:if strcmp(get(hZoomIn, 'Checked'),'on')set(hZoomIn, 'Checked', 'off');elseset(hZoomIn, 'Checked', 'on');end工具栏1.不显示工具栏1)GUIDE开发界面在对应的m文件中找到function Main_OpeningFcn(hObject, eventdata, handles, varargin)在该函数里面添加:set(hObject,'Toolbar','none');2)M文件开发hMainFigure = figure(... % The main GUI figure'MenuBar','none', ...'Toolbar','none', ...'HandleVisibility','callback', ...'Color', get(0,...'defaultuicontrolbackgroundcolor'));2.显示“Figure”工具栏set(hObject,'Toolbar','figure');3.添加自定义工具栏set(hObject,'Toolbar','none');hToolbar = uitoolbar(hObject);hNewPushtool = uipushtool(... % Open toolbar button'Parent',hToolbar,...'TooltipString','New File',...'CData',imread('New.bmp'));'HandleVisibility','callback', ...'ClickedCallback', @hOpenMenuitemCallback);4.获取工具栏句柄% get toolbar handlehToolbar = findall(gcf,'Type','uitoolbar');if isempty(hToolbar), return, end5.获取figure工具栏按钮的tag值% get toolbar handlehToolbar = findall(gcf,'Type','uitoolbar');if isempty(hToolbar), return, end% get all childrenhChildren = allchild(hToolbar);if isempty(hChildren), return,endhTags = get(hChildren, ‘Tag’);hTags保存了工具栏所有按钮的tag值:6.获取设置figure工具栏按钮的callback函数%reset callback function for "Zoom in"hZoomIn = findobj(hChildren,'Tag','Exploration.ZoomIn');set(hZoomIn,'ClickedCallback',@tbZoomIn_Callback);function tbZoomIn_Callback(hObject, eventdata)% hObject handle to tbZoomIn (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB 7.删除figure工具栏按钮% set figure toolbar firstset(hObject,'Toolbar','figure');% get toolbar handletbh = findall(hObject,'Type','uitoolbar');if isempty(tbh), return, end% toolbar buttons collectionhChildren = allchild(tbh);if isempty(hChildren), return, end% delete data cursor buttonhDeleted = findobj(hChildren,'Tag','Exploration.DataCursor');delete(hDeleted);8.设置figure工具栏按钮的状态% get toolbar handlehToolbar = findall(gcf,'Type','uitoolbar');if isempty(hToolbar), return, end% get all childrenhChildren = allchild(hToolbar);if isempty(hChildren), return,endhTags = get(hChildren, 'Tag');% find "Zoom In" buttonhb = findobj(hChildren,'Tag','Exploration.ZoomIn');if isempty(hb),return, end% set stateif strcmp(get(hObject, 'Checked'),'on')set(hObject, 'Checked', 'off');set(hb,'State', 'off');elseset(hObject, 'Checked', 'on');set(hb,'State', 'on');end。
MATLAB中为控件(uicontrol)绑定Callback函数(回调函数)
MATLAB中为控件(uicontrol)绑定Callback函数(回调函数)笔者⾛了许多弯路,终于找到这个⽅法,分享给⼤家。
'callback',@(~,~)colormapeditor(h)如果版本⽼不⽀持“~”这种写法,那就改成:'callback',@(x,y)colormapeditor(h)⽐如,在⼀个控件的回调函数中⽣成其他控件,并为⽣成的控件绑定回调函数:1 function fun_threshold_Callback(hObject, eventdata, handles)2 % hObject handle to fun_threshold (see GCBO)3 % eventdata reserved - to be defined in a future version of MATLAB4 % handles structure with handles and user data (see GUIDATA)5 ...6 Hnd2=uicontrol(gcf,'Style','pushbutton','String','确定','Position',[260203025]); % gcf可以省略7set(Hnd2,'Callback', @(x,y)fun_adaptiveThreshold(handles)); % 使⽤句柄调⽤回调函数8 ...下⾯为Hnd2要调⽤的调⽤函数:1 function fun_adaptiveThreshold(handles)2 % 回调函数体3 ...其他知识:1.uicontrol(Hnd1); % ⽂本框获得焦点2.guidata(hObject, handles); % 更新句柄3.在主程序⾯板上点击按钮关闭其他所有创建的窗⼝:setappdata(gcf, 'IgnoreCloseAll', 1); % 防⽌主程序窗⼝被关闭close all; % 关闭其他操作产⽣的窗⼝....(未完待续)。
【经验交流】matlab自定义回调函数语法规则 - MATLAB中文论坛 - Powered by Discuz!
MATLAB : matlab : liuhuanjinliu : 2009-10-10 22:57: matlab GUI set matlab 12event matlab 3(): wnsgtc : 2009-10-10 23:09: wnsgtc : 2009-10-10 23:281set(h, 'StartFcn', @myfile)function [varargout] = XIE_bwmorphfig(Size, varargin)h = figure('name', 'test', 'numbertitle', 'off', 'menubar','none', ... 'units', 'normalized', 'position', [0.14 0.18 0.720.64]);Matrix = [0.5 0.5 0.5];中文论坛标题【经验交流】自定义回调函数语法规则作者时间标题【经验交流】自定义回调函数语法规则大家在进行编程时,是不是经常遇到需要自己定义针对某一对象的回调函数的问题?首先用设置回调函数的名称和输入参数,然后定义回调函数,实现想要的功能。
针对回调函数的定义有如下语法规则需要遵守:如何设置回调函数如何定义回调函数、第一种情况:不需要向回调函数传递任何参数。
、第二种情况:向回调函数传入调用回调函数的对象的句柄以及(留待以后使用)的值。
、第三、四种情况:向回调函数传入调用回调函数的对象的句柄以及用户想要传递的参数多个。
因此,在设置和定义对象的回调函数时,要遵循以上的对应规则。
作者时间急时雨啊!作者时间给出我今天学到的两个例子来说明两种用法:()型set(h, 'StartFcn','myfile')function myfile set(h, 'StartFcn',@myfile)function myfile(obj,event)set(h, 'StartFcn',{'myfile', var1, var2,...})function myfile(obj,event, arg1, arg2, ...)set(h, 'StartFcn',{@myfile, var1,var2, ...})function myfile(obj,event, arg1, arg2, ...)uipanel('position', [0 Matrix], 'backgroundcolor', [0.8 0.8 0.8]);axes1 = subplot('position', [0 Matrix]);set(axes1, 'visible', 'on');uipanel('position', [0.5 Matrix], 'backgroundcolor', [0.8 0.8 0.8]);axes2 = subplot('position', [0.5 Matrix]);set(axes2, 'visible', 'on');radio1 = uicontrol('style', 'radio', 'Tag', 'radio1', ...'units', 'normalized', 'position', [0.1 0.3875 0.2 0.1], ...'backgroundcolor', [0.8 0.8 0.8], ...'string', 'doit', 'FontSize', 16, ...'callback', {@doit,axes1});global im;im = imread('I.jpg');imshow(im);function doit(src,eventdata,arg1)global im ;axes(arg1);im = rgb2gray(im);imshow(im);2set(h, 'StartFcn', 'myfile')()型function [] = XIE_bwmorphfig(varargin)figure('name', 'test', 'numbertitle', 'off', 'menubar','none', ...'units', 'normalized', 'position', [0.14 0.18 0.72 0.64]); Matrix = [0.5 0.5 0.5];uipanel('position', [0 Matrix], 'backgroundcolor', [0.8 0.8 0.8]);axes1 = subplot('position', [0 Matrix]);set(axes1, 'visible', 'on');global axes2 ;uipanel('position', [0.5 Matrix], 'backgroundcolor', [0.8 0.8 0.8]);axes2 = subplot('position', [0.5 Matrix]);set(axes2, 'visible', 'on');handles.radio1 = uicontrol('style', 'radio', 'Tag', 'radio1', ...'units', 'normalized', 'position', [0.1 0.3875 0.2 0.1], ...'backgroundcolor', [0.8 0.8 0.8], ...'string', 'doit', 'FontSize', 16, ...'callback', 'doit');global im;axes(axes1);im = imread('01.jpg');imshow(im);function doit()global im axes2 ;axes(axes2);im = rgb2gray(im);imshow(im);hotboy zhenghui : beretf : 2009-10-17 17:57: 1# liuhuanjinliu liuhuanjinliu matlab 2009a callback callback function hiton(obj,event,num).........event set(h, 'StartFcn', {@myfile, var1, var2, ...})var1,var2,...gui callback handles handles : liuhuanjinliu : 2009-10-17 18:16image ButtonDownFcn set(h,'ButtonDownFcn',{@mycallback,5});%callback num=5function mycallback(obj,event,num)% num 5%handles set(h,'ButtonDownFcn',{@mycallback,5,handles});%callback num=5这用需要把回调函数和主程序分别存储。
matlab 中uicontrol中的调用函数
matlab 中uicontrol中的调用函数在 MATLAB 中,`uicontrol` 用于创建图形用户界面 (GUI) 控件,例如按钮、滑动条等。
控件的事件(如按钮被按下)可以通过回调函数(callback function)来响应。
回调函数是一个在控件事件发生时被自动调用的MATLAB 函数。
假设你想在一个按钮的回调函数中调用一个名为 `myFunction` 的函数,你可以这样操作:1. 创建控件:使用 `uicontrol` 创建按钮,并指定按钮的回调函数为`myFunction`。
2. 编写回调函数:编写一个函数(如 `myFunction`),这个函数会在按钮被按下时被调用。
下面是一个简单的示例:```matlab% 创建 GUI 窗口和按钮f = figure('Position',[100 100 300 200]); % 创建窗口uicontrol('Style','pushbutton','String','Click me',...'Position',[100 100 100 30],...'Callback',myFunction); % 设置回调函数为 myFunction% 回调函数function myFunction(~,~)disp('Button clicked!'); % 当按钮被点击时,显示消息end```在这个示例中:我们首先使用 `figure` 创建一个窗口。
然后使用 `uicontrol` 创建一个按钮,并设置其位置和显示的文本。
我们通过 `'Callback',myFunction` 将按钮的回调函数设置为`myFunction`。
`myFunction` 是我们定义的回调函数,它会在按钮被点击时被调用,并显示一个消息。
Matlab Gui 控件调用另一控件的callback函数或控件其它函数
你要在Button1_Callback(hObject, eventdata, handles)内调用Button2的回调函数Button2_Callback(hObject, eventdata, handles)函数,只需加上下面红字部分即可:Button2_Callback((hObject, eventdata, handles);%%%%以下省略成Button2_Callback但会有这样的问题存在,即在Button2_Callback函数中已经加入guidata(hObject,handles),用Button2按钮调用Button2_Callback函数,里面的handles.xxx 变量参数可以传递出去;但是用Button1按钮调用Button2_Callback函数,里面的handles.xxx 变量参数将不能传递出去。
那么,这时若调用Button2_Callback函数,需要在Button1_Callback((hObject, eventdata, handles)函数里添加成如下代码形式:Button2_Callback((hObject, eventdata, handles);%%%%handles=guidata(hObject);这对于Button按钮是适合的,但是对于Popupmenu这样的控件,需要得到控件的值时,也存在调用失败的问题!因此,需要进一步的找出原因!下面写于2010.04.23日上面说到对于像Popupmenu这样的控件调用会出错,其实是由于自己没有真正看懂程序的原因。
控件的Popupmenu__Callback(hObject, eventdata, handles)里需要得到Popupmenu的值,里面有一句val = get (hObject,'Value');就是这个hObject捣的怪,改成val = get (handles.Popupmenu,'Value');就可以了,其他控件调用也不会出错。
MATLAB GUI图形界面 独立回调函数
独立的回调函数建立GUI函数的一个有效方法是编写独立的回调函数,专门执行一个或多个回调。
函数使用的对象句柄和其它变量可以作为参量传递,必要时回调函数可返回值。
考虑先前的一个例子,建立一个方位角的滑标,以脚本文件来实现。
% setview.m script filevw=get(gca, ' View ' );Hc_az=uicontrol(gcf, ' Style ' , ' slider ' ,...' Position ' ,[10 5 140 20],...' Min ' ,-90, ' Max ' ,90, ' Value ' ,vw(1),...' Callback ' ,[...' set(Hc_cur, ' String ' ,num2str(get(Hc_az, ' Value ' ))), ' ...' set(gca, ' View ' ,[get(Hc_az, ' Value ' ) vw(2)]) ' ]);Hc_min=uicontrol(gcf, ' style ' , ' text ' ,...' Position ' ,[10 25 40 20],...' String ' ,num2str(get(Hc_az, ' Min ' )));Hc_max=uicontrol(gcf, ' Style ' , ' text ' ,...' Position ' ,[110 25 40 20],...' String ' ,num2str(get(Hc_az, ' Max ' )));Hc_cur=uicontrol(gcf, ' Style ' , ' text ' ,...' Position ' ,[60 25 40 20],...' String ' ,num2str(get(Hc_az, ' Value ' )));下面是同样的例子。
matlab中callback的用法
matlab中callback的用法【实用版】目录1.MATLAB 中回调函数的概念2.回调函数的基本用法3.回调函数的应用示例4.回调函数的优点和局限性正文在 MATLAB 中,回调函数是一种将函数作为参数传递给另一个函数的函数类型。
回调函数允许我们在一个函数中执行另一个函数,从而使代码更加模块化和易于维护。
下面我们将详细介绍 MATLAB 中回调函数的用法。
1.MATLAB 中回调函数的概念回调函数(Callback Function)是一种特殊的函数类型,它作为参数传递给另一个函数,并在该函数内部执行。
回调函数实际上是一个函数指针,它指向一个函数,允许我们在一个函数中调用另一个函数。
2.回调函数的基本用法在 MATLAB 中,回调函数的使用方法如下:```matlabfunction callback_function(callback_function)% 在这里定义回调函数的参数和返回值% 例如:x = 2 + callback_function(3)% 将回调函数作为参数传递给另一个函数result = callback_function(x)end% 定义一个回调函数function result = my_callback_function(x)result = x^2end% 使用回调函数x = 2result = callback_function(my_callback_function)```在上面的示例中,我们定义了一个回调函数`my_callback_function`,它接受一个参数`x`,并返回`x`的平方。
然后,我们创建了一个名为`callback_function`的函数,它接受一个回调函数作为参数,并调用它。
最后,我们使用`my_callback_function`作为回调函数,将其传递给`callback_function`。
3.回调函数的应用示例回调函数在 MATLAB 中有很多应用,例如:- 创建可扩展的函数库,允许用户自定义函数并传递给其他函数;- 在图形用户界面(GUI)中使用,允许用户在 GUI 中定义和调用函数;- 用于编写复杂的数学运算,将多个函数组合成一个函数。
isfield函数
isfield函数isfield函数是MATLAB软件中的一个函数,主要用于判断一个结构体中是否存在指定的字段。
该函数的调用形式为:isfield(S,field)。
S表示待判断的结构体,field是一个字符串数组或者字符向量,代表要检查的字段名。
isfield函数的返回值是一个逻辑值,如果结构体S中存在fieldName字段,则返回true,否则返回false。
该函数可以接受多个字段名作为输入参数,并返回一个布尔数组,其中每个元素代表对应的字段是否存在。
isfield函数的应用十分广泛。
在数据处理、图像处理、机器学习等领域,isfield函数都可以被用来检查数据结构中的字段,确保程序的正常执行。
在机器学习中,由于模型训练数据通常以结构体形式存储,使用isfield函数可以确保每个样本都包含了必要的特征字段。
isfield函数还常用于程序调试,可以帮助程序员快速定位错误并排除问题。
isfield函数的参数说明:S:待判断的结构体field:一个字符串数组或者字符向量,代表要检查的字段名isfield函数的使用方法:```matlab% 创建一个结构体A.a = 1;A.b = 'hello';A.c = [1,2,3];% 检查结构体中的字段是否存在isfield(A, 'a') % 输出:trueisfield(A, 'd') % 输出:falseisfield(A, {'a', 'b', 'd'}) % 输出:[1,1,0]```在上述示例中,首先创建了一个结构体A,并给A中添加了三个字段a、b和c。
接着,使用isfield函数判断a和d字段是否存在,返回值分别为true和false。
isfield函数以一个字符串数组的形式输入多个字段名,返回一个布尔数组表示每个字段的存在情况。
除了以上说明,isfield函数还有一些注意点和需要注意的地方,主要包括以下几点:1、isfield函数只能检查结构体中的字段,对于其他类型的变量,该函数会返回false。
matlab 回调函数
matlab 回调函数Matlab是一种非常强大的数学分析和编程环境,不仅具有很好的矩阵运算能力,还具备了许多生产力和开发功能,如图形和GUI工具。
它支持许多编程范式,如脚本、函数、类等,其中一个特别有用的功能是回调函数。
回调函数在许多Matlab应用程序中被使用,因为它可以帮助我们在事件发生后自动执行某些操作,本文将介绍Matlab回调函数的相关内容。
一、Matlab回调函数的定义Matlab回调函数是指在某个事件发生时,被动地由Matlab系统调用的函数。
回调函数通常被用于GUI应用程序中,例如按钮按下、鼠标移动到控件上、选择下拉菜单等。
在GUI应用程序中,回调函数通常被用来响应用户的动作,例如更新显示、执行计算、启动另一个子GUI 等。
二、Matlab回调函数的类型Matlab支持多种类型的回调函数,下面列出了一些常见的回调函数类型:1. 按钮回调函数按钮回调函数是当用户点击按钮时自动执行的函数。
当用户点击按钮时,Matlab系统将自动执行该回调函数。
该函数通常用于启动计算或将数据传递给其他GUI。
2. 绘图回调函数绘图回调函数被用于自动在绘图期间执行某些操作。
当用户绘制图形时,例如绘制矩形、线条、文本等,绘图回调函数将自动执行。
3. 滚轮回调函数滚轮回调函数通常被用于监视鼠标滚轮事件。
当用户使用鼠标滚轮时,滚轮回调函数自动执行。
4. 窗口回调函数窗口回调函数通常用于监视GUI窗口事件。
例如,当用户调整窗口大小、关闭窗口或窗口失去焦点时,窗口回调函数将自动执行。
三、Matlab回调函数的示例下面的示例展示了如何定义和使用Matlab回调函数:1. 定义按钮回调函数function btnCallback(hObject,eventdata)% 提示按钮被按下disp('按钮被按下了!');end在上面的示例中,我们定义了一个名为btnCallback的按钮回调函数。
该函数被选中的按钮调用,当按钮被点击时,它会在控制台上输出一条信息。
matlab下拉框回调函数
matlab下拉框回调函数Matlab是一款广泛使用的科学计算软件,它提供了多种控件,包括下拉框(dropdown),这个控件可以让用户选择其中一个选项。
当用户选择某个选项时,下拉框回调函数(dropdown callback)就会被调用,以便在程序中执行相应的操作。
本文将介绍如何在Matlab中使用下拉框回调函数。
首先,在Matlab中创建一个下拉框控件。
可以使用“uicontrol”命令创建一个下拉框,如下所示:``` matlabpopup = uicontrol('Style', 'popup',...'String', {'Option 1','Option 2','Option 3','Option 4'},...'Position', [100 50 100 50],...'Callback', @popup_callback);```这段代码创建了一个下拉框,它包含四个选项:“Option 1”,“Option 2”,“Option 3”,“Option 4”。
回调函数指定为“popup_callback”,这个函数还没有定义,需要在下面进行定义。
接下来,需要定义下拉框回调函数“popup_callback”。
在这个函数中,首先获取下拉框控件的当前选项。
可以使用以下代码获取当前选项:``` matlabval = get(popup, 'Value');```这个函数返回下拉框中当前选项的索引。
例如,如果用户选择了“Option 2”,则返回值为2。
然后,可以根据当前选项执行特定的任务。
例如,可以在回调函数中使用条件语句,根据不同的选项执行不同的代码。
下面是一个简单的例子,它将在命令行窗口中打印用户所选的选项:``` matlabfunction popup_callback(source, eventdata)val = get(source, 'Value');switch valcase 1disp('Option 1 selected');case 2disp('Option 2 selected');case 3disp('Option 3 selected');case 4disp('Option 4 selected');endend```这个函数获取当前选项的索引,并使用Switch语句根据选项执行相应的操作。
matlab回调函数
matlab回调函数Matlab是一种强大的数学计算软件,广泛应用于科学、工程、金融等领域。
Matlab提供了许多函数和工具箱,方便用户进行数值计算、数据可视化、数据分析等操作。
其中,回调函数是Matlab中一个非常有用的特性,它可以让用户在程序运行过程中插入一些自定义的操作,从而实现更加灵活和智能的计算。
回调函数是什么?回调函数是指用户自定义的一段程序代码,它会在Matlab程序运行过程中被自动调用。
通常情况下,回调函数会被绑定到某个特定的事件上,例如窗口关闭、按键按下、鼠标移动等。
当这个事件发生时,Matlab会自动调用回调函数,并将一些相关的参数传递给它。
用户可以在回调函数中对这些参数进行处理,然后返回一些结果或者执行一些操作。
回调函数的优点回调函数的主要优点在于它可以让用户在程序运行过程中实时地对数据进行处理和分析。
例如,如果用户需要对某个数据集进行实时监控,可以利用回调函数来定期更新数据,然后在回调函数中进行分析和可视化。
这样一来,用户就可以及时发现数据中的异常和趋势,从而做出更加准确和及时的决策。
另外,回调函数还可以提高程序的灵活性和可扩展性。
用户可以根据自己的需求编写不同的回调函数,然后将它们绑定到不同的事件上。
这样一来,用户就可以根据实际情况来动态地调整程序的行为,而不必重新编写整个程序。
回调函数的使用方法Matlab提供了许多内置的回调函数,例如figure、uicontrol、timer等。
用户可以利用这些函数来创建自己的图形界面和控件,然后将回调函数绑定到这些控件上。
下面是一个简单的例子:```matlab% 创建一个按钮控件hButton = uicontrol('Style','pushbutton','String','Click me','Position',[100 100 100 50]);% 绑定一个回调函数到按钮上set(hButton,'Callback',@buttonCallback);% 定义回调函数function buttonCallback(hObject, eventdata, handles)disp('Button clicked!');end```在这个例子中,我们首先创建了一个按钮控件,并将它的位置和大小设置为[100 100 100 50]。
matlab回调函数作用
matlab回调函数作用Matlab回调函数作用Matlab是一种非常强大的数学计算软件,它可以用于各种数学计算和数据分析。
在Matlab中,回调函数是一种非常重要的概念,它可以用于处理各种事件,例如鼠标点击、键盘输入、窗口关闭等等。
在本文中,我们将介绍Matlab回调函数的作用和用法。
Matlab回调函数的作用Matlab回调函数是一种特殊的函数,它可以在Matlab程序中注册,以便在特定事件发生时自动调用。
回调函数通常用于处理用户输入、图形界面事件、文件读写等等。
回调函数的作用是让程序能够响应用户的操作,从而实现更加灵活和交互的功能。
Matlab回调函数的用法Matlab回调函数的用法非常简单,只需要定义一个函数,然后将其注册到Matlab程序中即可。
下面是一个简单的例子,演示如何使用回调函数处理鼠标点击事件:```matlabfunction my_callback(src, event)disp('Mouse clicked!');endfigure;set(gcf, 'WindowButtonDownFcn', @my_callback);```在上面的例子中,我们定义了一个名为my_callback的函数,它接受两个参数src和event。
当鼠标点击窗口时,Matlab会自动调用my_callback函数,并将鼠标点击事件的源和事件信息作为参数传递给它。
在my_callback函数中,我们只是简单地输出一条消息,表示鼠标已经被点击了。
在最后一行代码中,我们使用set函数将my_callback函数注册到当前窗口的WindowButtonDownFcn属性中。
这意味着当鼠标点击窗口时,Matlab会自动调用my_callback函数。
除了鼠标点击事件,Matlab还支持许多其他事件,例如键盘输入、窗口关闭、文件读写等等。
您可以使用Matlab的文档来了解更多有关回调函数的信息。