怎么解决这个警告?

时间:2016-07-22 15:14:48

标签: matlab

我不知道如何解决此警告:

  

警告:从numeric隐式转换为char

我想调试我的代码,我认为警告是由这行代码引起的:

   % Append the hexadecimal representation of the current array element

    line = [line, '0x',lower(dec2hex(hex_array(i,j),2)), ' '];

此警告在执行时不会导致任何问题。但是,我需要验证我的结果,这个结果不允许我这样做。

如果你能帮助我,我将非常感激。

3 个答案:

答案 0 :(得分:2)

您正在使用数字连接字符串。在MATLAB中,当你这样做时,它将implicitly convert the number to a string,因为字符数组具有优先权。要确定要用于该号码的字符串,它会使用ASCII代码。

['string', 45]
%   string-

要避免警告,您应该在连接之前将数字显式转换为字符串。如果您希望将数字作为字符串,请使用num2strsprintf进行创建。

['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);