没有意义的错误。

1次观看(过去30天)
路加福音Witherow
路加福音Witherow 2022年3月11日
评论道: 沃斯 2022年3月11日
我调用了一个函数,如果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)”);
结束
7评论
路加福音Witherow
路加福音Witherow 2022年3月11日
我告诉你,这个错误来自于函数中的一行,它告诉matlab当n>10时给出一个错误。
如果n > 10
错误(“字母大小(n)不能超过10”);
因此,当n的值小于10时,我感到困惑,但这个错误仍然会发生。

登录评论。

答案(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);
结束
结束
0 0 0
字母长度(n)不能超过10位数(d)不能超过字母长度(n)
函数[numberRounds] = crack_code(n,d)
%健全检查
如果n > 10
错误(字母大小(n)不能超过10);
结束
如果d > n
错误(“数字(d)不能超过字母(n)”);
结束
numberRounds = 0;
结束
8的评论
沃斯
沃斯 2022年3月11日
欢迎你!
如果您不介意,请将答案标记为“已接受”,以便其他人知道问题似乎已经解决。

登录评论。


1月
1月 2022年3月11日
您可以完全确定,只有在满足条件的情况下,才会发生错误。Matlab并不累也不邪恶,而是一个确定性系统。使用调试器来查明发生了什么:在包含error()命令的两行中设置断点。或者让Matlab在所有错误处自动停止:
dbstop如果错误
现在让Matlab运行,当它停止时,手动检查条件。
你没有提到,如果n>10或d>n条件导致错误。但是如果你检查d和n的值,这马上就清楚了。
一个可能的错误来源是,您有两个版本的函数,而运行的不是您期望的那个。检查这个:
哪一个crack_code -
主脚本或主函数也是如此。
1评论
路加福音Witherow
路加福音Witherow 2022年3月11日
这并没有帮助,我的n值是6、8和9,没有一个大于10,但代码仍然会在n>10时给出一个错误

登录评论。


史蒂文的主
史蒂文的主 2022年3月11日
一开始我以为你会碰到公共非标量 如果 条件的问题。从 文档 如果 关键字:“ 如果 表达式 语句 ,最后 评估一个 表达式 ,当表达式为真时执行一组语句。当表达式的结果为非空和时,表达式为真 只包含非零元素 (逻辑或实数)。否则,表达式就是假的。”[加粗强调]
在这个陈述句中
%阻塞注释,以便稍后在此回答中运行代码
% {
10 .如果n >
%}
这个条件只有在 所有 n的元素大于10。如果n中有一百万个大于10的元素和一个小于10的元素,那么 如果 条件不满足。
如果你想要这个条件被满足 任何 表达式中的值为true时,使用 任何 函数。
N = 1:10;
如果N >%不满意
disp (" n的所有元素都大于5"
其他的
disp (n中并非所有元素都大于5
结束
n中并非所有元素都大于5
如果Any (n > 5)%满意
disp (n中至少有一个元素大于5
其他的
disp (" n的所有元素都不大于5"
结束
n中至少有一个元素大于5
但是仔细阅读,我想知道你给我们看的数据是不是你正在操作的数据。你在传递一个 数量 在函数中 该数字的文本表示形式 ?
Number = 1
Number = 1
textRepresentation =' 1 '
textRepresentation =' 1 '
名为number的变量的值小于10。名为textRepresentation的变量包含一个字符,其字符代码大于10。
isNumberTooLarge = number >%假
isNumberTooLarge =逻辑
0
10 . isTextTooLarge = textRepresentation >%真实
isTextTooLarge =逻辑
1
双(textRepresentation)
Ans = 49
1评论
路加福音Witherow
路加福音Witherow 2022年3月11日
你认为这是gen_array函数的问题吗?

登录评论。

类别

标签

下载188bet金宝搏


释放

R2021b

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!