学习素材:MATLAB教程_台大郭彦甫(14课)原视频补档
MATLAB教學 - 03结构化程式与自定义函数_哔哩哔哩_bilibili
(部分素材使用视频截图)
目录
3.函数预设变量(function default variable)
一、指令
主要介绍matlab中的循环语句和条件语句
在matlab中按F5可运行脚步
1.运行
例:
for i=1:10
x=linspace(0,10,101);
plot(x,sin(x+i));
print(gcf,'-deps',strcat('plot',num2str(i),'.ps'));
end
在matlab中可以用”%%“对程序进行分块,分块后,背景色变为黄色
此外用间断点进行Debug
则程序开始运行后,断代变红,且程序运行到此停止
2.条件语句
(1)if-else条件语句:
例:判断奇数还是偶数
a=3;
if rem(a,2)==0
disp('a is even')
else
disp('a is odd')
end
(rem为模除,disp为输出)
注:
matlab中不等于为:~=,逻辑非为:~
在matlab中,循环语句和条件语句最后都要加end
(1)switch case条件语句
与c不同的是,switch case不用default而是使用otherwise
例:判断num是-1,1,0或其他
intput_num=1;
switch intput_num
case -1
disp('negetive 1');
case 0
disp('zero');
case 1
disp('positive 1');
otherwise
disp('other value');
end
2.循环语句
(1)while循环
例:%n!<10^100(prod:数组乘积)
n=1;
while prod(1:n)<1e100
n=n+1
end
例:计算1+2+3+...+999
n=1;
m=0;
while n<=999
m=m+n
n=n+1
end
(2)for循环
格式:for variable=start:increment:end
increment默认为1
例:2^n
for n=1:10
a(n)=2^n;
end
disp(a)
例:将矩阵A的值,赋给矩阵B,并将矩阵B中的复数元素取相反数
A=[0,-1,4;9,-14,25;-34,49,64];
B=A;
disp(B)
for ii=1:size(B,1)
for jj=1:size(B,2)
if B(ii,jj)<0
B(ii,jj)=-B(ii,jj);
end
end
end
disp(B)
二、预宣告
若不先定义A,则每次改变A时,系统会将A保存,后寻找一块可容纳更新后A的位置,再储存,这样会影响程序的运行速率
代码1
tic%启动表计时器
toc%从秒表读取已用时间
tic
for ii=1:2000
for jj=1:2000
A(ii,jj)=ii+jj;
end
end
toc
tic
代码2
tic
A=zeros(2000,2000);%零矩阵,预宣告部分
for ii=1:size(A,1) %size(A,1)为A的行数
for jj=1:size(A,2) %size(A,2)为A的列数
A(ii,jj)=ii+jj;
end
end
toc
观察两段代码的结果,可以看出,进行预宣告的代码2,速率有显著的提升
三、技巧
1.clear all 清除所有变量
2.close all 清除所有图表
3.clc 清除命令行窗口
4.语句后加分号(特别是在每个赋值语句)则该语句的结果不会出现在命令行窗口上
5.“…”换行号
A=[1,2,3,4,5,6;6,5,4,3,2,1]
B=[1,2,3,4,5,6;...
6,5,4,3,2,1]
6.Ctrl+C 将程序中途停止
四、函数(function)
1.查看和使用
如使用平均数函数
A=[1,2,3,4,5,6];
mean(A)
不需要使用时打开,直接调用便可
edit(which('mean.m'))
可用类似格式,在命令行窗口输入,用于查看函数
2.自定义函数
在编辑器中使用function关键字编写程序,并以function后的名称为文件名保存即可作为函数调用
使用格式:
注:
*:如果定义函数,考虑矩阵对应元素相乘情况而不是矩阵乘法,则要用.*来描述。即:对象可能是向量vector时
例:输入华氏摄氏度,输出摄氏度,且一直运行,直到输入空
function x=temperature(x0)
x=input('请输入摄氏温度 ');%在用户输出前提示,请求用户输入
while ~isempty(x)%判空
x=num2str((x-32).*5./9);%将数字转换为字符数组
disp('华氏温度为')
disp(x)
x=input('请输入摄氏温度');
end
3.函数预设变量(function default variable)
4.函数句柄
一种创建函数的非函数方法,即不必在.m文件中定义
f=@(x) exp(-2*x);
x=0:0.1:2;
plot(x,f(x));
一种更加简单快捷的方法
把x=0:0.1:2给f,即给exp(-2*x)
再借助plot函数画出图像