matlab如何输入一个函数表达式 matlab如何画yx图像?
matlab如何画yx图像?
首先定义x: x linspace的取值范围(起点,终点,分多少部分)
比如:x linspac
matlab对于返回句柄的应用?
1.函数句柄的创建
函数句柄是MATLAB中一种特殊的数据结构,其位置类似于其他计算机语言中的函数对象(Javascript、Python)、函数指针(C)或函数引用(Perl)的位置。函数就是把一个函数封装成一个变量,这样就可以像其他变量一样在程序的不同部分传递。
MATLAB中的函数句柄和普通函数调用时没有区别。下面介绍几种创建函数句柄的方法,最后通过函数句柄调用sin(pi)。
创建% function handl:直接添加@%语法:@ fun nam: STR2FUNc函数%语法:str 2 fun(函数名)fun 2 str 2 func(cos);% Mod:匿名函数%语法:@(参数列表)单行表达式fun3 @ (x,y)x . 2y . 2;调用% fun 1(pi)的函数句柄;
2.将函数句柄作为函数参数。
排序是函数对象的经典应用场景之一,即为未知类型的数组列表提供自定义排序规则。接下来,我将实现一个函数super_sort,它接收两个参数。第一个参数是要排序的数组,第二个参数是原始数据的转换函数。Super_sort可以根据转换后的结果对原始数据进行排序,并返回排序后的原始数据。
%文件名:super _ sorted super _ sort (arr,FH)转换的FH(arr);% Transform原数组[~,index]排序(transformed);%获取排序后的原始数组位置索引sorted arr(index);%返回排序后的原始数组结尾
测试脚本:
arr round(randn(8,1)* 10);超级排序(arr,@abs)
%根据绝对值super_sort(arr,@sin)对arr进行排序。
%根据sin(x)的结果对arr进行排序
注意,与Perl或Python不同,这里提供的函数句柄不用于元素。之间的比较,但用于将数组中的每个元素映射到要比较的值。
3.带功能手柄的绘图
在函数句柄的帮助下,可以方便的绘制各种函数的图像,这些函数往往以ez开头。下面我将演示两个函数,ezplot,ezsurf。
% ez plot[0,2 * pi] ezplot中sin函数的曲线(@sin,[0,2 * pi]);
% ezplot利用x和y上的参数方程绘制心形线xfun @(t)3 *(2 * cos(t)-cos(2 * t));yfun @(t)3 *(2 * sin(t)-sin(2 * t));ezplot(xfun,yfun);
% ezsurf画一个二次fun3 @ (x,y)x 2y 2;ezsurf(fun3,[-2,2,-2,2]);
4.使用函数句柄过滤图像。
MATLAB提供了函数colfilt,可以将图像分成独立的子块(局部处理)或者重叠的窗口(可以实现二维卷积和中值滤波),利用传入的函数句柄对每个子块进行处理。
函数的原型是B colfilt(A,[M N],BLOCK_TYPE,FUN),其中B是输出图像,A是输入图像,[M N]是图像块或窗口的长和宽,BLOCK_TYPE参数决定是进行块处理还是窗口滑动处理,FUN是进行处理的函数句柄,只接收一个矩阵参数,这个矩阵的每一列都是拉长成列向量的子图像。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。