matlab最后一步出错,最后一条错误消息和相关信息

该博客介绍了MATLAB中创建函数average的过程,包括检查输入是否为向量的子例程check_inputs。当输入为非向量时,该函数会抛出错误。通过lasterror函数,可以获取错误信息,如错误消息、标识符和堆栈信息。堆栈信息揭示了错误发生的具体位置,帮助进行调试。
摘要由CSDN通过智能技术生成

示例 1

将以下 MATLAB 代码保存在名为 average.m 的文件中:

function y = average(x)

% AVERAGE Mean of vector elements.

% AVERAGE(X), where X is a vector, is the mean of vector elements.

% Nonvector input results in an error.

check_inputs(x)

y = sum(x)/length(x); % The actual computation

function check_inputs(x)

[m,n] = size(x);

if (~((m == 1) || (n == 1)) || (m == 1 && n == 1))

error('AVG:NotAVector', 'Input must be a vector.')

end

现在运行函数。由于此函数需要向量输入,向其传递一个标量值可强制产生错误。错误发生在子例程 check_inputs 中:

average(200)

Error using average>check_inputs (line 11)

Input must be a vector.

Error in average (line 5)

check_inputs(x)

从 lasterror 获取以下三个字段:

err = lasterror

err =

message: [1x61 char]

identifier: 'AVG:NotAVector'

stack: [2x1 struct]

显示错误消息的文本:

msg = err.message

msg =

Error using average>check_inputs (line 11)

Input must be a vector.

显示包含 stack 信息的字段。err.stack 是 2×1 结构体,因为它提供有关失败子例程 check_inputs 以及外部主函数 average 的信息:

st1 = err.stack(1,1)

st1 =

file: 'd:\matlab_test\average.m'

name: 'check_inputs'

line: 11

st2 = err.stack(2,1)

st2 =

file: 'd:\matlab_test\average.m'

name: 'average'

line: 5

注意

主函数的名称通常应与包含此函数的文件的文件名相同。如果它们的名称不同,MATLAB 将使用 stack 结构体的 name 字段中的文件名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值