本文主要是介绍MATLAB(二)结构化程式与自定义函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、脚本编辑器
- 常用功能
- 二、脚本流
- 1. 控制流
- 2.关系(逻辑)操作符
- if elseif else
- switch
- while
- Exercise练习
- 3. 预分配空间给变量
- Exercise练习
- break
- 4. 技巧
- 5. 脚本与函数
- MATLAB内置函数的内容
- 用户定义函数
- 具有多个输入和输出的函数
- 函数的默认变量
- 函数处理
前言
此篇文章是我在B站学习时所做的笔记,语句部分为亲自动手演示过的,方便复习用。此篇文章仅供学习参考。
提示:以下是本篇文章正文内容,下面案例可供参考
一、脚本编辑器
新建脚本文件、两种运行方式
在命名上,不能以数字开头,字母大小写有区别
常用功能
断点、分节、注释、运行
智能缩进
二、脚本流
通常脚本从第一行运行到最后一行
应用结构化编程技术(子程序、循环、条件等)使程序看起来整洁
1. 控制流
if, elseif, else | 如果condition为真,执行语句 |
---|---|
for | 执行指定次数的语句 |
switch, case, otherwise | 执行几组语句中的一个 |
try, catch | 执行语句并捕获结果错误 |
while | 当条件为真时重复执行语句 |
break | 终止for或while循环的执行 |
continue | 将控制传递给for或while循环的下一次迭代 |
end | 终止代码块,或指示最后一个数组索引 |
pause | 暂时停止执行 |
return | 将控制权返回给调用函数 |
2.关系(逻辑)操作符
rem(a,2):返回a除以2后的余数
disp:显示变量的值
if elseif else
switch
input_num=1;
switch input_numcase -1disp('negative 1');case 0disp('zero');case 1disp('positive 1');otherwisedisp('other value');
end
while
1e100=1x10^100
prod(1:n)=n!
n = 1;
while prod(1:n) < 1e100n = n + 1;
end
在命令行输入n,点击enter输出得70,表示n=70是小于1e100的最大的阶乘数
Exercise练习
使用while循环来计算序列的总和1+2+3+…+999
sum = 0;
n=0;
while n < 1000sum = n + sum;n=n+1;
end%命令行窗口:>> Untitled
>> sumsum =499500
或者直接在end;后面加个disp(sum),就不用另外输入了。
3. 预分配空间给变量
在前面的例子中,我们没有预先分配空间给vector a,而是让MATLAB在每次迭代时调整它的大小。
哪种方法更快?
B中有预分配矩阵(A=zeros(2000,2000);),就不用总是在计算大小
Exercise练习
使用结构化编程:
- 把矩阵A中的元素复制到矩阵B中
- 如果它们在矩阵A中的对应项是负的,改变矩阵B中的值
break
终止for或while循环的执行
用于不能保证收敛的迭代
4. 技巧
- Clear all以删除以前的变量。
- close all以关闭所有的数字。
- 在命令末尾使用分号来禁止不需要的输出。
- 使用省略号…让脚本更具可读性:
>> A=[1 2 3 4 5 6;...6 5 4 3 2 1]
%等价于
>> A=[1 2 3 4 5 6;6 5 4 3 2 1]
- 按ctrl+C在结论之前终止脚本
ticfor n=1 : 1000000for ii = 1:2000for jj = 1:2000A( ii,jj) = ii + jj;endendendtoc
5. 脚本与函数
脚本和函数都是包含MATLAB命令的。
m文件函数是在需要执行例程时编写的。
脚本 | 功能 |
---|---|
没有输入参数 | 有输入参数 |
没有输出参数 | 有输出参数 |
对全局工作区中的数据进行操作 | 对本地工作区中的数据进行操作 |
MATLAB内置函数的内容
蓝色代表关键字
用户定义函数
写一个函数,计算给定初始位移xo,初始速度vo,下落时间t的自由落体位移:
function x = freebody(x0,v0,t)
% calculation of free falling
% x0: initial displacement in m
% v0: initial velocity in m/sec
% t: the elapsed time in sec
% x: the depth of falling in m
x = x0 + v0.*t + 1/2*9.8*t.*t;
具有多个输入和输出的函数
质点的加速度和作用在它上的力是:
function [a, F] = acc(v2,v1,t2,t1,m)
a = (v2-v1)./(t2-t1);
F = m.*a;%命令行窗口
>> [Acc Force] = acc(20,10,5,4,1)
函数的默认变量
inputname | 函数输入的变量名称 |
---|---|
mfilename | 当前正在运行的代码的文件名 |
nargin | 函数输入参数数目 |
nargout | 函数输出参数数目 |
varargin | 可变长度输入参数列表 |
varargout | 可变长度的输出参数列表 |
function [volume]=pillar(Do,Di,height)
if nargin==2,height=1;
end
volume=abs(Do.^2-Di.^2).*height*pi/4;%命令行窗口
>> pillar(1,1)ans =0>> pillar(2,1)ans =2.3562
函数处理
f = @(x) exp(-2*x);
x = 0:0.1:2;
plot(x, f(x));
如若侵权,请及时与我联系。
此篇文章仅供学习参考,禁止转载!
这篇关于MATLAB(二)结构化程式与自定义函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!