没有意义的错误。
1次观看(过去30天)
显示旧的注释
我调用了一个函数,如果n大于10就会报错;然而,我分配给“n”的值小于10,但错误仍然出现,我不明白为什么。
Ndarray = [6,8,9;
4,8,6];
上面一行可能是n个值,下面一行可能是d个值。
[numberRounds1] = crack_code(ndarray(1,1),ndarray(2,1)));%第一组n和d的值
[numberRounds2] = crack_code(ndarray(1,2),ndarray(2,2));%第二组n和d个值
[numberRounds3] = crack_code(ndarray(1,3),ndarray(2,3));%第三组n和d的值
下面是需要这些值的函数:
[numberRounds] = crack_code(n,d)
在这个函数中,我调用了给出错误的函数。
这是函数的一部分,给出了地板。
%健全检查
如果n > 10
错误(字母大小(n)不能超过10);
结束
如果d > n
错误(“数字(d)不能超过字母(n)”);
结束
答案(3)
沃斯
2022年3月11日
有可能还有另一个吗
crack_code.m
它取代了路径上的这个所以调用的是另一个而不是这个?你可以通过以下方法找到答案:
哪一个crack_code -
或者有可能
ndarray
中使用之前的更改
crack_code
?
实际上,这个函数似乎工作正常:
Ndarray = [6,8,9,11 7;
4, 8, 6, 10 9];
上面一行可能是n个值,下面一行可能是d个值。
为Jj = 1:size(ndarray,2)
试一试
[numberRounds] = crack_code(ndarray(1,jj),ndarray(2,jj));
disp (numberRounds);
抓我
disp (ME.message);
结束
结束
函数[numberRounds] = crack_code(n,d)
%健全检查
如果n > 10
错误(字母大小(n)不能超过10);
结束
如果d > n
错误(“数字(d)不能超过字母(n)”);
结束
numberRounds = 0;
结束
1月
2022年3月11日
您可以完全确定,只有在满足条件的情况下,才会发生错误。Matlab并不累也不邪恶,而是一个确定性系统。使用调试器来查明发生了什么:在包含error()命令的两行中设置断点。或者让Matlab在所有错误处自动停止:
dbstop如果错误
现在让Matlab运行,当它停止时,手动检查条件。
你没有提到,如果n>10或d>n条件导致错误。但是如果你检查d和n的值,这马上就清楚了。
一个可能的错误来源是,您有两个版本的函数,而运行的不是您期望的那个。检查这个:
哪一个crack_code -
主脚本或主函数也是如此。
史蒂文的主
2022年3月11日
一开始我以为你会碰到公共非标量
如果
条件的问题。从
文档
的
如果
关键字:“
如果
表达式
,
语句
,最后
评估一个
表达式
,当表达式为真时执行一组语句。当表达式的结果为非空和时,表达式为真
只包含非零元素
(逻辑或实数)。否则,表达式就是假的。”[加粗强调]
在这个陈述句中
%阻塞注释,以便稍后在此回答中运行代码
% {
10 .如果n >
%}
这个条件只有在
所有
n的元素大于10。如果n中有一百万个大于10的元素和一个小于10的元素,那么
如果
条件不满足。
如果你想要这个条件被满足
任何
表达式中的值为true时,使用
任何
函数。
N = 1:10;
如果N >%不满意
disp (" n的所有元素都大于5")
其他的
disp (n中并非所有元素都大于5)
结束
如果Any (n > 5)%满意
disp (n中至少有一个元素大于5)
其他的
disp (" n的所有元素都不大于5")
结束
但是仔细阅读,我想知道你给我们看的数据是不是你正在操作的数据。你在传递一个
数量
在函数中
该数字的文本表示形式
?
Number = 1
textRepresentation =' 1 '
名为number的变量的值小于10。名为textRepresentation的变量包含一个字符,其字符代码大于10。
isNumberTooLarge = number >%假
10 . isTextTooLarge = textRepresentation >%真实
双(textRepresentation)