基于MATLAB的特殊函数与画图(附图像与代码)

一. 可变输入输出个数

conv()函数可以计算两个多项式的积,利用varargin可以实现任意多个多项式的积。

举例

代码:

clc;clear;
P=[1 2 4 0 5];
Q=[1 2];
F=[1 2 3];

%方法一
D1=convs(P,Q,F)
D1_sym=poly2sym(D1)

%方法二
D2=conv(conv(P,Q),F)
D2_sym=poly2sym(D2)


function a=convs(varargin)
a=1;
for i=1:length(varargin),
    a=conv(a,varargin{i});
end
end

运行结果:


D1 = 1 6 19 36 45 44 35 30

 
D1_sym =x^7 + 6*x^6 + 19*x^5 + 36*x^4 + 45*x^3 + 44*x^2 + 35*x + 30
 

D2 = 1 6 19 36 45 44 35 30

 
D2_sym =x^7 + 6*x^6 + 19*x^5 + 36*x^4 + 45*x^3 + 44*x^2 + 35*x + 30

二. 几个特殊函数

2.1 inline函数

可以免去文件,格式如下:

fun=inline('函数内容',自变量列表)

例题1

计算:

f(x,y)=sin(x^2+y^2)

解:

MATLAB代码:

f=inline('sin(x.^2+y.^2)','x','y');
f(2,3)

运行结果:

ans =0.4202

2.2 匿名函数

f=@(x,y)sin(x.^2+y.^2)
%f=@(变量列表)函数内容

2.3 feval函数

MATLAB提供的feval()函数是用来执行函数操作的函数,故有“函数的函数”之称,格式:

%格式1
[y1,y2,···]=feval(fhandle,x1,···,xn)
y=feval(@sin,2)
%fhandle是函数句柄,函数句柄是一种数据类型,以@引导

%格式2
[y1,y2,···]=feval(function,x1,···,xn)
y=feval('sin',2)
%function是函数名
%x1,x2···,xn是输入参数
%y1,y2···,yn是输出参数

举例

clc;clear;
syms t;
f=@(x,y)x^2+y^2;
k1=feval(f,1,t)
k2=f(1,t)

运行结果:

k1 =t^2 + 1
 
k2 =t^2 + 1
 

三. 绘制二维图像

已知:

t=t_1,t_2,\cdots,t_n

y=y(t_1),y(t_2),\cdots,y(t_n)

构造向量:

t=[t1,t2,\cdots,t_n],\quad y=[y(t_1),y(t_2),\cdots,y(t_n)]

画图格式:

plot(t,y)

曲线的性质,如线型、粗细、颜色等,还可以使用下面的命令进行指定

plot(t1,y1,选项1,t2,y2,选项2,···,tm,ym,选项m)

总结如下常用选项:

曲线线型 曲线颜色 标记符号
'-' 'b' '*'
'--' 'g' '.'
':' 'm' 'x'
'-.' 'w' 'v'
'none' 'c' 'hexagram'
'k' '>'
'r' 'pentagram'
'y' 'o'
'^' 'square'
'diamond'
'<'

例题2

对以下函数画图:

y=sin(tanx)-tan(sinx),\quad x\in[-\pi,\pi]

解:

MATLAB代码:


clc;clear;
x=[-pi:0.05:pi]; %以0.05为步距构造自变量向量
y=sin(tan(x))-tan(sin(x)); %求出各个点上的函数值
plot(x,y)
figure,
plot(x,y,'r-.Pentagram') %红色 划线 每个转折点用五角星表示

运行结果:

四. 特殊命令画图

fplot()函数通过其内部的自适应算法来动态决定自变量的间隔,调用格式:

fplot(fun,limits,LineSpec)

 举例

fplot(@(x1)sin(tan(x1))-tan(sin(x1)),[-pi,pi])

运行结果:

函数ezplot无需数据准备,可以画出隐函数
 

隐函数:形如f(x,y)=0这种不能写出y=f(x)函数

调用格式:

ezplot(f)
%f是字符串或代表数学函数的符号表达式

 举例

代码:

ezplot('sin(tan(x))-tan(sin(x))')

运行结果:

例题3

画图:

y=\begin{cases}1.1sign(x),&|x|>1.1\\x,&|x|\leq1.1 \end{}

解:

MATLAB代码:

clc;clear;

%方法一
x=[-2:0.02:2]; %生成自变量向量
y=1.1*sign(x).*(abs(x)>1.1)+x.*(abs(x)<=1.1);
plot(x,y)

%方法二
figure,
plot([-2,-1.1,1.1,2],[-1.1,-1.1,1.1,1.1])

 运行结果:

五.  图形元素属性获取与修改

图形中,每条曲线、坐标轴、图形窗口分别是一个对象。可用set()函数设置对象的属性,用get函数获得对象的某个属性:

set(句柄,'属性名1',属性值1···,'属性名2',属性值2,···)

v=get(句柄,'属性名')

这两个语句在界面编程中很有用。图形句柄和图形之间是一种一一对应的关系,简单来说图形句柄就是指向了这个图形的一个变量,通过它可以设定该图形的各种属性。

句柄是编程的基础,一个句柄是指使用一个唯一的整数值,用于标志应用程序中的不同对象和同类对象中的不同实例,例如一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等,应用程序能够通过句柄访问相应的对象信息。

猜你喜欢

转载自blog.csdn.net/forest_LL/article/details/124565883