%% Script Flow(脚本流)
%脚本文件放在Matlab的work目录下,或者放在自己建的任意文件夹下,然后在File菜单中的Set Path中把你自己的文件夹加到Matlab工作文件夹中
%Run是执行所有function,Run Section是执行背景黄的那个区块
%如果程序没有缩进,选择程序,把背景拉蓝,右键智能缩进
%try:
for i=1:10
x=linspace(0,10,101);
plot(x,sin(x+i));
print(gcf,'-deps',strcat('plot',num2str(i),'.ps'));
end
%% Flow Comtrol(流程控制)
% if, elseif, else 若if语句为真,则执行子句
%例
a=3;
if rem(a,2)==0 %rem(a,b) - a/b的余数
disp('a is even') %disp(X),显示变量 X 的值,而不打印变量名称
else
disp('a is odd')
end
% switch, case, otherwise 根据switch语句内容判断执行哪个子句
%对应case块执行完就退出,不用break
%otherwise 块是可选的。仅当没有 case 为 true 时,MATLAB 才会执行这些语句
% while 重复执行子句直到while中的条件为假
%例
n=1;
while prod(1:n)<1e100
n=n+1;
end
%prod - 数组元素的乘积
%此 MATLAB 函数 返回 A 的数组元素的乘积。
%如果 A 是向量,则 prod(A) 返回元素的乘积。
%如果 A 为非空矩阵,则 prod(A) 将 A 的各列视为向量,并返回一个包含每列乘积的行向量。
%如果 A 为 0×0 空矩阵,prod(A) 返回 1。
%如果 A 为多维数组,则 prod(A)沿第一个非单一维度运算并返回乘积数组。此维度的大小将减少至 1,而所有其他维度的大小保持不变。
%B = prod(A,dim) 返回沿维度 dim 的乘积。例如,如果 A 为矩阵,则 prod(A,2) 为一个包含每一行乘积的列向量。
%B = prod(,type) 使用前面语法中的任何输入参数按 type 指定的类返回数组。type 可以是 'double''native' 或 'default'。
%B = prod(,nanflag) 指定在上述任意语法的计算中是包括还是忽略 NaN 值。prod(A,'includenan') 会在计算中包括 NaN 值,而 prod(A,'omitnan') 则忽略这些值。
% for 执行子句固定次数
%
%例
a=zeros(1,10);%使用循环语句应尽量预先分配内存空间
for n=1:10 %相当于n=1:1:10
a(n)=2^n; %给向量a的第n个元素赋值
end
% try, catch 执行子句并捕获执行过程中的异常
% break 跳出循环
% continue 直接进入下一次循环
% end 结束子句
% pause 暂停程序
% return 返回到调用函数处
%上述所有循环和条件语句都要在末尾以end闭合
%% Relational(Logicla) Operators(逻辑运算符)
% < 小于
% <= 小于或等于
% > 大于
% >= 大于或等于
% == 等于
% ~= 不等于(C语言是!=)
% && 且
% || 或
%% 写程序的技巧
Clear all %以删除以前的变量。
close all %以关闭所有的数字。
%; 在命令末尾使用来使得程序结果不显示。
%... 使用换行号让脚本更具可读性
%Ctrl+C 在程序运行结束前终止
%% 脚本与函数
%脚本和函数都是包含MATLAB命令的,m文件函数是在需要执行例程时编写的。
%函数可以被存入函数名.m文件中,也可以以函数句柄的形式定义在内存中.
%% 查看内置函数
%which命令查看内置函数源代码文件的位置
%与edit命令结合可以查看内置函数的源代码
edit(which('mean.m'))
%可以在编辑器中看到mean.m文件,mean函数的源代码在内。
%% 自定义函数
%创建 functionName.m文件
%function是一个关键字,声明该文件中保存的是一个函数.
%输入变量和输出变量是非必须的,函数既可以没有输入变量,也可以没有输出变量.
%函数名应与.m文件名相同,且不包含特殊字符(最好不要有中文).
%例如自定义一个freebody函数
%创建freebody.m文件,该文件得保存在MATLAB搜索路径里
%文件内容:
%function [输出变量名] = 函数名(输入变量名)
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/29.8t.t;
%使用函数
a=freebody(0,0,10)
b=freebody([0,1],[0,1],[10,20])
%具有多个输入和输出的函数
%acc.m文件内容
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)
%% 函数的默认变量
%% 以函数句柄形式定义函数
f = @(x) exp(-2x);%将f指向exp(-2x)这个函数,@(x)是f的输入值
x = 0:0.1:2;
plot(x, f(x));