MATLAB结构化程式与自定义函数

本文介绍了MATLAB的基础知识,包括如何使用脚本编辑器创建和运行脚本,以及各种控制流结构如if-elseif-else、switch、for、while等。还讨论了逻辑运算符和函数的使用,包括用户自定义函数和内置函数的概念。
摘要由CSDN通过智能技术生成

目录

前言

一、脚本编辑器

新建和运行脚本文件

脚本编辑器功能

二、 脚本流

控制流

关系(逻辑)运算符

指令 if elseif else

指令 switch

指令 while

Exercise

for 指令​编辑

为变量预先分配空间

Exercise

指令 break​编辑

技巧

脚本与函数

MATLAB 内置函数的内容

用户定义函数

具有多个输入和输出的功能

Exercise

函数默认变量

功能句柄

前言

为在B站跟随台湾大学郭彦甫老师学习matlab的笔记,截图来自郭老师PPT,部分内容参考B站弹幕和评论,仅供学习参考。


一、脚本编辑器

新建和运行脚本文件

新建脚本文件,运行脚本文件

脚本编辑器功能

二、 脚本流

控制流

if,elseif,else

for

switch,case

while

break

continue

end

pause

return

关系(逻辑)运算符

指令 if elseif else

所有matlab程序指令要以end宣告结束

rem(a,2) 余数,a除以2的余数

disp 显示变量的值

a=3;
if rem(a,2)==0;
    disp('a is even')
else
    disp('a is odd')
end
a is odd

指令 switch

input_num = 1;
switch input_num
    case -1
        disp('negative 1');
    case 0
        disp('zero');
    case 1
        disp('positive 1');
    otherwise
        disp('other value');
end
positive 1

指令 while

prod() product求积

prod(1:n)=n!

prod([1 2 3 5]) =1x2x3x5

1e100=1x10^100

n=1;
while prod(1:n)<1e100
    n=n+1;
end
>> n

n =

      70     

Exercise

使用while循环计算

n=1;
sum=0;
while n<1000
    sum=sum+n;
    n=n+1;
end
disp(sum)
 499500      

for 指令

将a的n次方储存在数组a的第n个位置

for n=1:10
    a(n)=2^n;
end
disp(a)
  1 至 7 列

       2              4              8             16             32             64            128       

  8 至 10 列

     256            512           1024   

只计算奇数次方

for n=1:5
    a(n)=2^(2*n-1);
end
disp(a)
       2              8             32            128            512    

为变量预先分配空间

上面例子中每次循环需要调整向量A的大小,这会影响计算速度,下面例子中将事先为向量A分配空间。

计时指令,tic(开始)toc(结束)

使用分节运行

%%
tic
for ii=1:2000
    for jj=1:2000
        A(ii,jj)=ii+jj;
    end
end
toc
%%
tic
A=zeros(2000,2000);
for ii=1:2000
    for jj=1:2000
        A(ii,jj)=ii+jj;
    end
end
toc
时间已过 2.068275 秒。
时间已过 0.030096 秒。

Exercise

把矩阵A中的元素复制到矩阵B中

如果它们在矩阵A中的对应项是负的,改变矩阵B中的值

A=[0 -1 4;9 -14 25;-34 49 64];
B=zeros(3,3);
for n=1:9
    B(n)=A(n);
    if A(n)<0
        B(n)=-A(n);
    end
end
disp(B)
       0              1              4       
       9             14             25       
      34             49             64

指令 break

技巧

clear all 以删除以前的变量

close all 以关闭所有数字

clc 以清除指令窗口

使用换行号...换行以提升程序可读性

按 Ctrl+C 以终止脚本

脚本与函数

脚本和函数都是包含MATLAB命令的。
.m文件函数是在需要执行例程时编写的。

MATLAB 内置函数的内容

用户定义函数

文件名要与函数名一致

用.*可以在输入时输入多组变量,如下第二个例子所示

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;
>> freebody(0,0,10)

ans =

     490 

>> freebody([0 1],[0 1],[10,20])

ans =

     490           1981 

具有多个输入和输出的功能

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)

Acc =

      10       


Force =

      10       

Exercise

编写一个函数要求输入华氏温度

计算摄氏温度

以度为单位显示转换后的温度摄氏度

脚本应继续运行,直到没有数字提供用于转换

function F2C()
while true
    F=input('temperature in F is: ');
    if isempty(F)       %判断F是否为空矩阵,是空矩阵返回true
        break;
    else
        C=(F-32)*5/9;
        disp(['temperature in C is: ',num2str(C)])
    end
end
>> F2C
temperature in F is: 100
temperature in C is: 37.7778
temperature in F is: 10
temperature in C is: -12.2222
temperature in F is: 
>> 

函数默认变量

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(2,1)

ans =

    2.3562

>> pillar(2,1,2)

ans =

    4.7124

功能句柄

f = @(x) exp(-2*x);
x = 0:0.1:2;
plot(x, f(x));

类似C语言指针,将 f 指向 exp(-2*x)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值