matlab学习——程序流程控制

2024-03-30 03:18

本文主要是介绍matlab学习——程序流程控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

%% 1 顺序结构程序 
%A=input('...') 输入
%disp()          输出
%pause(s)        s为延迟秒数,省略则暂停按任意键继续
%输入平面内两点坐标,计算距离及黄金分割点坐标
a=input('a=');
b=input('b=');
c=a+0.618*(b-a);
s=abs(a-b);
disp(s)
disp(c)
%% 2 if语句选择结构
% 2.1单分支if语句
%   if 条件
%      语句组
%   end
% 条件为标量时:非零条件成立,零条件不成立
% 条件为矩阵时:矩阵非空且不包含零元素条件成立,否则不成立
% 2.2双分支if语句
%   if 条件
%      语句组1
%   else 
%      语句组2
%   end
%例:输入一个整数,若为奇数输出其平方根,否则输出其立方根
x=input('请输入x的值:');
if rem(x,2)        %或rem(x,2)==1 y=sqrt(x);
elsey=x^(1/3);      %或power(x,1/3)
end
y
% 2.3多分支if语句
%   if 条件1
%       语句组1
%   elseif 条件2
%       语句组2
%      ...
%   elseif 条件m
%       语句组m
%   else 
%       语句组n
%   end
%例:输入一个字符,大写字母->小写字母,小写字母->大写字母,数字字符->平方,其他->不变
c=input('请输入一个字符:','s');
if c>='A' && c<='Z'disp(lower(c))
elseif c>='a' && c<='z'disp(upper(c))
elseif c>='0' && c<='9'disp(str2double(c)^2)
elsedisp(c)
end
%% 3 用switch语句实现选择结构
% switch 表达式
%   case 结果表1
%       语句组1
%   case 结果表2
%       语句组2
%      ...
%   case 结果表m
%       语句组m
%   otherwise
%       语句组n
% end
% switch表达式的值应是可列举的(整型表达式、字符串表达式)
% case结果表为switch表达式的取值,取值有多个时,用单元数据表示({...})
x=input('x=?');
switch fix(x)case 2disp(111);case 2disp(222);case {3,4,5}disp(333);otherwisedisp(444);
end
% 例:输入一个英文单词,判断它是否以元音字母开头
clc,clear
c=input('请输入一个单词:','s');
switch c(1)case {'A','E','I','O','U','a','e','i','o','u'}disp([c,'以元音字母开头']);otherwisedisp([c,'以辅音字母开头']);
end
% 或
c=input('请输入一个单词:','s');
if findstr(c(1),'AEIOUaeiou')>0disp([c,'以元音字母开头']);
elsedisp([c,'以辅音字母开头']);
end
% 例:整数分级(输入PM2.5数值,输出空气质量等级)
g=input('请输入PM2.5值:');
switch fix(g)case num2cell(0:34)disp('空气质量优');case num2cell(35:74)disp('空气质量良好');case num2cell(75:114)disp('空气质量轻度污染');case num2cell(115:149)disp('空气质量重度污染');case num2cell(150:249)disp('空气质量重度污染');otherwisedisp('空气质量严重污染');
end
%% 4 for语句实现循环结构
% for 循环变量=表达式1(初值):表达式2(步长):表达式3(终值)/行向量/矩阵表达式
%   循环体语句
% end
% for语句针对向量的每一个元素执行一次循环体(向量为空时,循环体一次也不执行)
% 退出循环之后,循环变量的值就是向量中最后的元素值
for i=[1,3,2,5]i
end
for j=[1;3;2;5]j
end
i,j
% 例:计算圆周率π
% 利用无穷级数展开式求
y=0;g=-1;
n=input('n=?');
for i=1:ng=-g;y=y+g*1/(2*i-1);
end
pai=4*y
% 向量求和方法
n=input('n=?');
x=1:2:(2*n-1);
y=(-1).^(2:n+1)./x;
pai=sum(y)*4
% 利用定积分的近似值求pi的近似值
a=0;b=1;
n=input('n=?');
h=(b-a)/n;
x=a:h:b;
f=sqrt(1-x.*x);
s=[];
for k=1:ns1=(f(k)+f(k+1))*h/2;s=[s,s1];
end
pai=4*sum(s)
% 蒙特卡洛法求pi
s=0;
n=input('n=?');
for i=1:nx=rand(1);y=rand(1);if x*x+y*y<=1s=s+1;end
end
pai=s/n*4
%% 5 while语句实现循环结构
% while 条件
%   循环体语句
% end
% 例:从键盘输入若干数、输入0时结束,计算这些数的平均值和它们的和
msum=0;
n=0;
x=input('Enter a number (end in 0):');
while x~=0msum=msum+x;n=n+1;x=input('Enter a number (end in 0):');
end
if n>0msummean=msum/n
end
%% 流程转向语句break和continue
% break语句,跳出循环体
% continue语句,结束本次循环
% 例:求[100,200]之间第一个能被21整除的整数
for n=100:200if rem(n,21)~=0continueendnbreak
end
%% 循环的嵌套
% 例:筛选法求[2,m]内全部素数
m=input('m=');
p=1:m;
p(1)=0;
for i=2:sqrt(m)for j=2*i:i:mp(j)=0;end
end
n=find(p~=0);
p(n)
%% 6 匿名函数
% 函数句柄变量=@(匿名函数输入参数)匿名函数表达式
f=@(x,y) x^2+y^2;
f(3,4)
% 函数句柄变量=@函数名
h=@sin;
h(pi/2)
% 例:求y=f(40)/(f(30)+f(20)),f(n)=n+10ln(n^2+5)
clc,clear
f1=@(n) n+10*log(n^2+5);
y=f1(40)/(f1(30)+f1(20))
%% 7 函数的递归调用
% 例:求n!
fact(10)
function f=fact(n)if n<=1f=1;elsef=fact(n-1)*n;end
end
% 例:验证fibonacci数列性质
clc,clear
F=[];
for k=1:20F=[F,ffib(k)*ffib(k)];
end
sum(F)
ffib(20)*ffib(21)
function f=ffib(n)if n>2f=ffib(n-1)+ffib(n-2);elsef=1;end
end
```c
```c
%% 8 函数参数与变量的作用域
% nargin    调用函数时输入实参的个数
% nargout   调用函数时输出实参的个数
function fout=test1(a,b,c)if nargin==1fout=a;elseif nargin==2fout=a+b;elseif nargin==3fout=(a*b*c)/2end
end
% 局部变量:函数文件中的变量为局部变量
% 全局变量:global 全局变量名
function f=wad(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y;
end
global ALPHA BETA
ALPHA=1;
BETA=2;
s=wad(1,2)

这篇关于matlab学习——程序流程控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/860347

相关文章

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen