我不知道如何解决此警告:
警告:从numeric隐式转换为char
我想调试我的代码,我认为警告是由这行代码引起的:
% Append the hexadecimal representation of the current array element
line = [line, '0x',lower(dec2hex(hex_array(i,j),2)), ' '];
此警告在执行时不会导致任何问题。但是,我需要验证我的结果,这个结果不允许我这样做。
如果你能帮助我,我将非常感激。
答案 0 :(得分:2)
您正在使用数字连接字符串。在MATLAB中,当你这样做时,它将implicitly convert the number to a string,因为字符数组具有优先权。要确定要用于该号码的字符串,它会使用ASCII代码。
['string', 45]
% string-
要避免警告,您应该在连接之前将数字显式转换为字符串。如果您希望将数字作为字符串,请使用num2str
或sprintf
进行创建。
['string', num2str(45)]
% string45
如果你做想要ASCII等价物,只需将其包裹在对char
的调用中以明确地将其作为字符串转换
['string', char(45)]
% string-
答案 1 :(得分:0)
你在数组中连接数字(即低(...))与字符串(即' 0x'),因此Matlab必须将你的数字转换为字符串类型并警告你它已经这样做,如果结果是你想要的,你可以选择忽略它。
如果你想避免它,请使用Cell Array:
line = {line, '0x',lower(dec2hex(hex_array(i,j),2)), ' '};
或者执行@Suever建议的操作,将您的数字变量转换为Chars以避免此警告。即:
line = [line, '0x',num2str(lower(dec2hex(hex_array(i,j),2))), ' '];
说明:
Matlab只允许一个数组是整个数字或整个字符(即字符串类型),在它看到数组中的字符串或字符的情况下,它会自动将其转换为字符数组。
答案 2 :(得分:0)
如果您尝试使用[str1,str2,str3]语法连接字符串,如果其中一个对象不是字符串,则会收到该警告。如果“str2”实际上是数字矩阵/标量,则可以使用num2str(str2)获取字符串表示。
话虽如此,最好使用sprintf来生成该字符串,例如
s = sprintf("A has a value of %d\n", myval);