第4章 MATLAB编程基础——4.4 控制程序流的其他常用指令

简介: 第4章 MATLAB编程基础——4.4 控制程序流的其他常用指令

4.4  控制程序流的其他常用指令


4.4.1  return指令


通常,当被调用函数执行完成后,MATLAB会自动将控制权转回主函数或Commands窗口。但是如果在被调用函数中插入return指令,则可以强制MATLAB结束执行该函数并把控制权转出。

MATLAB中,"return"是用于从函数中返回结果并终止函数执行的指令。它的用法如下:

1)在函数体内,使用 "return" 后跟要返回的值,可以将该值作为函数的输出返回给调用者。例如:

function result = myFunction(a, b)
    % 函数体
    result = a + b;     % 返回 a 和 b 的和
    return;             % 返回结果并终止函数执行
end


2)在函数体内,可以使用 "return" 单独作为一个语句,用于提前终止函数的执行,即使函数体中还有其他的代码未执行完。例如:

function myFunction()
    % 函数体
    if some_condition
        % 条件满足时,提前终止函数执行
        return;
    end
    % 这里的代码将不会被执行
end


需要注意的是,使用 "return" 语句时,会立即终止函数的执行,并且不会执行 "return" 后面的语句。如果函数体内有多个 "return" 语句,只有第一个 "return" 会被执行,后面的 "return" 语句将不会被执行。另外,如果函数没有输出参数,可以省略 "return" 语句,函数执行结束后会自动返回。


4.4.2  inputkeyboard指令


1input指令将MATLAB的控制权暂时交给用户,用户通过键盘输入数值、字符串或表达式等,并按Enter键将输入内容传递到工作区,同时把控制权交还给MATLAB。其常用的调用格式如下。

● Value=input('message'):将用户输入的内容赋值给变量Value

● Value=input('message','s'):将用户输入的内容以字符串的形式赋值给变量Value

说明:

指令中的“message”是显示在屏幕上的字符串。

对于上面第一种调用格式,用户可以输入数值、字符串等各种形式的数据。

对于上面第二种调用格式,用户无论输入什么内容,均以字符串的形式赋值给变量。


例如,以下代码演示了如何使用input获取用户输入的数字,并将其保存到一个变量中:

% 获取用户输入的数字
num = input('请输入一个数字: ');
% 显示用户输入的数字
fprintf('您输入的数字是: %d\n', num);


2)当执行遇到keyboard指令时,MATLAB将控制权暂时交给键盘,用户可以由键盘输入各种合法的MATLAB指令。只有当用户输入完成,并输入return指令后,控制权才交还给MATLAB

keyboard指令用于在MATLAB代码中插入一个调试断点,以便在程序执行到该点时停下来,以便用户检查和调试代码。其使用方式如下:

keyboard


当执行到keyboard指令时,MATLAB会暂停代码的执行,进入调试模式,允许用户逐行执行代码,查看和修改变量的值,以及执行其他调试操作。用户可以通过键盘输入命令来与调试器交互,例如查看变量的值、执行MATLAB命令、设置断点等。当用户完成调试操作后,可以通过输入dbcont命令继续执行代码,或者通过输入dbquit命令退出调试模式。

例如,以下代码演示了如何在MATLAB代码中插入一个调试断点:

% 一段需要调试的代码
x = 10;
y = 5;
z = x + y;
% 在这里插入调试断点
keyboard
% 继续执行剩余的代码
w = z * 2;
fprintf('计算结果为: %d\n', w);


当程序执行到keyboard指令时,MATLAB会暂停执行,进入调试模式,允许用户检查和调试代码。用户可以查看和修改变量xyz的值,并执行其他调试操作,然后通过输入dbcont命令继续执行剩余的代码。


inputkeyboard指令的不同之处在于:keyboard指令允许输入任意多个MATLAB指令,而input指令只允许用户输入赋值给变量的,即数组、字符串或元胞数组等。


4.4.3  yesinput指令


yesinput指令是一个只能输入的指令,它提供的输入值是一个默认量,并可以对输入范围进行检查,其调用格式如下。

● Value=yesinput('Prompt',Default,Possib)

说明:

1yesinput指令涉及用户和MATLAB之间的交互,因此无法在notebook程序中运行。

2Prompt为文字提示,Default为默认的设置值,Possib为可选值。

3)当yesinput指令运行后,如果用户不输入任何值,则变量Value将接收默认值。


4.4.4  pause指令


pause指令的功能为控制执行文件的暂停与恢复,其调用格式如下。

● pause:暂停执行文件,等待用户按任意键继续。

● pause(n):在继续执行文件之前,暂停n秒。

需要注意的是,"pause" 会阻塞程序的执行,直到暂停时间到达或用户按下任意键,因此在使用 "pause" 时需要谨慎,以避免程序执行过长的等待时间。在实际应用中,可以根据需要使用 "pause" 来控制程序的流程和交互,例如添加程序执行中的等待时间或等待用户输入确认等。


4.4.5  continue指令


continue语句把控制权传给下一个在其中出现的ifwhile循环的迭代,忽略任何循环体中保留的语句。在嵌套循环中,continue语句把控制权传给下一个forwhile循环所嵌套的迭代。


4-13continue指令使用示例。

本例使用continue跳过负数,计算正数的平方和立方。

创建M文件并命名为ex4_13.m,利用M文件编辑器在M文件中输入:

% 输入一个数组,输出正数的平方和立方
numbers = [2, -3, 4, -5, 6, 7, -8, 9, 10];
squares = 0;
cubes = 0;
for i = 1:numel(numbers)
    if numbers(i) < 0
        continue;  % 跳过负数
    end
    % 计算正数的平方和立方
    squares = squares + numbers(i)^2;
    cubes = cubes + numbers(i)^3;
end
disp(['正数的平方和:' num2str(squares)]);
disp(['正数的立方和:' num2str(cubes)]);
运行后可得到如下结果:
正数的平方和:286
正数的立方和:2360


4.4.6  break指令


for循环或while循环结构中,有时并不需要运行到最后一次循环用户就已经得到了所需要的结果,那么后面的循环就变成冗余的了,消耗了运算时间并占用了内存。

break指令可进行对for循环或while循环结构的终止,通过使用break指令,可以不必等待循环的预定结束时刻,而是根据循环内部设置的终止项来判断。

若终止项满足,则可以使用break指令退出循环;若终止项始终未满足,则照常运行至循环的预定结束时刻。


4-14for循环的中途终止。

创建M文件并命名为ex4_14.m,利用M文件编辑器在M文件中输入:

a(1) = 1;
a(2) = 1;
n = 1000;
for i = 3 : n
    a(i) = a(i - 1) + a(i - 2);     % 求下一项
    if a(i) > 9999
        [i a(i)]
        break      % 当元素大于9999时,退出循环
    end
end

运行M文件可得到如下结果:

ans =
          21       10946


4.4.7  errorwarning指令


在编写M文件时,常用的错误或警告指令的调用格式有以下几种。

● error('message'):显示出错信息message,终止程序。

● errortrap:错误发生后,控制程序继续执行与否的开关。

● lasterr:显示MATLAB系统判断的最新出错原因,并终止程序。

● warning('message'):显示警告信息message,继续运行程序。

● lastwarn:显示MATLAB系统给出的最新警告程序,并继续运行。


相关文章
|
7月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
5月前
|
数据采集 并行计算 算法
LabVIEW与Matlab联合编程的途径及比较
LabVIEW与Matlab联合编程的途径及比较
127 0
LabVIEW与Matlab联合编程的途径及比较
|
自然语言处理 算法
第4章 MATLAB编程基础——4.5 脚本与函数(2)
第4章 MATLAB编程基础——4.5 脚本与函数(2)
|
自然语言处理
第4章 MATLAB编程基础——4.5 脚本与函数(1)
第4章 MATLAB编程基础——4.5 脚本与函数(1)
|
自然语言处理 算法
第4章 MATLAB编程基础——4.3 MATLAB的控制流(2)
第4章 MATLAB编程基础——4.3 MATLAB的控制流(2)
|
机器学习/深度学习 算法
第4章 MATLAB编程基础——4.3 MATLAB的控制流(1)
第4章 MATLAB编程基础——4.3 MATLAB的控制流(1)
|
存储 算法 调度
Matlab+Yalmip两阶段鲁棒优化通用编程指南
主要包含8大内容: ①.拿到一个复杂的两阶段鲁棒优化问题的分析步骤和方法。 ②.采用Yalmip工具箱中的uncertain函数和鲁棒优化模块求解两阶段鲁棒优化的子问题。 ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同。 ④.使用KKT条件求解两阶段鲁棒优化的子问题。 ⑤.使用对偶变换求解两阶段鲁棒优化的子问题。 ⑥.采用Yalmip工具箱的内置函数,将线性约束写成紧凑矩阵形式的方法。 ⑦.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的KKT条件。 ⑧.矩阵形式的两阶段鲁棒优化问题,如何快速写出子问题内层优化的对偶问题。
|
存储 人工智能 数据可视化
MATLAB 常用数学函数和数组和字符串、元胞数组和结构体,MATLAB 编程,关系运算符和逻辑变量(一)
MATLAB 常用数学函数和数组和字符串、元胞数组和结构体,MATLAB 编程,关系运算符和逻辑变量
163 0
MATLAB 常用数学函数和数组和字符串、元胞数组和结构体,MATLAB 编程,关系运算符和逻辑变量(一)
|
存储 算法 索引
第4章 MATLAB编程基础——4.7 MATLAB程序的调试
第4章 MATLAB编程基础——4.7 MATLAB程序的调试
第4章 MATLAB编程基础——4.6 M文件中变量的检测与传递
第4章 MATLAB编程基础——4.6 M文件中变量的检测与传递

热门文章

最新文章