day01-MATLAB的.M文件
3.1函数M文件
函数M文件指的就是后缀为M的函数文件,函数文件编写了内装函数。我们只要掌握函数的调用和使用规则即可。
以下的例子调用了
函数 sym2poly
函数 roots
例题01 求解三次代数方程式
>> syms x
>> y=x^3+6*x^2+11*x+6
y =
x^3 + 6*x^2 + 11*x + 6
>> y1=sym2poly(y)
%提取代数方程的系数向量y1,sym2poly为将多项式转换成系数向量的转换函数
y1 =
1 6 11 6
>> roots(y1) %求解方程式的根
ans =
-3.0000
-2.0000
-1.0000
3.2函数M文件的组成
我们了解一个M文件的组成后,以后我们便可以通过查看文档去了解函数的功能。其中,查看一个函数的方法是在命令窗口中 输入type 函数名;然而 有些函数的功能时被隐藏起来的,只能够使用而不能够查看。
(1)函数定义行。
(2)帮助文本的标题行。 说明函数的功能
(3)帮助文本的内容。 说明变量的类型,使用举例还有相关函数名
(4)函数体。 输入变量计算输出变量的程序体,还包括程序运行时的出粗处理
(5)附注。
function A=triarea(a,b,c)
%必须有关键字function开头 A是输出变量(如果有多个用[]),
%triarea是函数名,(a,b,c)是输入变量
if a<0|b<0|c<0
disp('The a,b,c must be positive number.'),return
end
if a+b<c|a+c<b|b+c<a
disp('This is impossible.'),return
end
s=(a+b+c)/2;
A=(s*(s-a)*(s-b)*(s-c))^(1/2);
在这里需要注意的是,如果用break的话是会报错的,会提示用return。原因是break只是适用于for和while循环语句。
3.3内联函数
函数M文件和内联函数的区别:
函数M文件是常用的
内联函数是一次性的
书写格式:
F=inline(expr,‘x1’,‘x2’,……,‘xn’)
inline——内联函数
expr——以字符串形式的数学表达式
‘x1’,‘x2’,……,‘xn’——数学表达式expr中的变量
例题03 用内联函数来表示y=sinx1cosx1+sinx2cosx2-sinx1cosx2, 并求x1=Π/8,x2=3Π/8时的函数值
>> y=inline('sin(x1)*cos(x1)+sin(x2)*cos(x2)-sin(x1)*cos(x2)','x1','x2')
y =
内联函数:
y(x1,x2) = sin(x1)*cos(x1)+sin(x2)*cos(x2)-sin(x1)*cos(x2)
>> y(pi/8,3*pi/8)
ans =
0.5607
注意:变量x1,x2要括号,sin(x1)sin(x2)之间时有*。
3.4文本M文件
函数M文件是提高函数的复用性
而文本M文本就是提高 MATLAB命令和语句的复用性
举例用一个M文件来绘制4幅不同的花瓣图,通过enter切换
%flower petal plots
theta=-pi:pi/300:pi; %设置角度向量,分度为pi/300
rho(1,:)=2*sin(5*theta).^2; %计算频率为5的正弦函数平方
rho(2,:)=cos(10^theta).^3; %计算频率为10的余弦函数平方
rho(3,:)=sin(theta).^2;
rho(4,:)=5*cos(3.5*theta).^3;
for i=1:4 %设置循环次数
polar(theta,rho(i,:)) %绘制上述函数的极坐标图
switch i %根据不同的i的值,写入不同的标题Switch为开关语句
case 1
title 10-petal
case 2
title 20-petal
case 3
title two-petal
case 4
title 2-3-2-unsymmetrical-petal %标题为2-3-2 不对称花瓣
end
pause %程序暂停,当按Enter键,则继续执行下一个循环
end
以上片段有错误:错误如下;(待解决)
flower_plots
错误使用 ^
输入必须为标量和方阵。
要按元素进行 POWER 计算,请改用 POWER (.^)。
出错 flower_plots (line 4)
rho(2,:)=cos(10theta).3; %计算频率为10的余弦函数平方
更新:
上面的问题已经解决啦!
我通过搜索发现会出现这样的错误一般的修正方式就是将提示错误的地方的^改成 .^ ;然后我仔细一看提示错误的地方line4!!!!
rho(2,:)=cos(10^theta).^3;
源代码长酱紫
rho(2,:)=cos(10*theta).^3;
一个符号打错,我太难了!
接下来是花瓣图: