2016-07-22 39 views
0

Ich weiß nicht, wie diese Warnung zu beheben:Wie löst man diese Warnung?

Warnung: implizite Konvertierung von numerischen

ich meinen Code debuggen verkohlen, und ich denke, dass die Warnung von dieser Linie verursacht wird Code:

% Append the hexadecimal representation of the current array element 

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

Diese Warnung verursacht kein Problem bei der Ausführung. Allerdings muss ich mein Ergebnis überprüfen und dieses Ergebnis lässt mich das nicht tun.

Ich wäre sehr dankbar, wenn Sie mir helfen könnten.

Antwort

0

Sie verketten Zahlen (dh niedriger (...)) mit Strings (dh '0x') in einem Array, also muss Matlab Ihre Zahlen in String Type umwandeln und warnt Sie, dass es Sie getan hat kann wählen, es zu ignorieren, wenn das Ergebnis das ist, was Sie wollen.

Wenn Sie es vermeiden wollen, Cell Array verwenden:

line = {line, '0x',lower(dec2hex(hex_array(i,j),2)), ' '}; 

Oder tun, was @Suever vorgeschlagen, wandeln Sie Ihre numerischen Variablen zu Chars diese Warnung zu vermeiden. ie:

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

Erklärung:

Matlab erlaubt nur ein Array zu sein gesamten Numeric oder ganzer Chars (dh String-Typ), in den Fällen, in denen es einen String oder Char in dem Array sehen, es wird wandelt es automatisch in ein Char-Array um.

+0

Sie können mit '[]' Strings verketten. – rayryeng

+0

Ja, verwenden Sie einfach '[]', aber konvertieren Sie die Zahl explizit in ein Zeichen, um die Warnung zu vermeiden – Suever

+0

mit Zellen-Syntax kann unerwünschte Nebenwirkungen haben (z. B. unerwünschte Zeilenumbrüche einzuführen).In der Tat ist eine der Hauptverwendungen der Zellensyntax die Einführung von Zeilenumbrüchen in Diagrammbezeichnungen/Titeln: p –

0

Wenn Sie versuchen, eine Zeichenfolge mit der Syntax [str1, str2, str3] zu verketten, erhalten Sie diese Warnung, wenn eines der Objekte keine Zeichenfolge ist. Wenn "str2" tatsächlich eine numerische Matrix/ein Skalar ist, können Sie die Zeichenfolgendarstellung mit num2str (str2) abrufen.

Nachdem gesagt, ist es wahrscheinlich am besten, sprintf zu verwenden, um diese Zeichenfolge, z. s = sprintf("A has a value of %d\n", myval);

2

Sie verketten eine Zeichenfolge mit einer Zahl. Wenn Sie dies in MATLAB tun, wird es implicitly convert the number to a string da das Zeichenarray Vorrang hat. Um festzustellen, was Zeichenfolge für die Nummer zu verwenden, verwendet es ASCII Codes.

Um die Warnung zu vermeiden, sollten Sie Ihre Nummer vor der Verkettung explizit in eine Zeichenfolge konvertieren. Wenn Sie die Nummer als Zeichenfolge verwenden möchten, verwenden Sie num2str oder sprintf, um es zu erstellen.

['string', num2str(45)] 
% string45 

Wenn Sie das ASCII-Äquivalent wollen tun, wickeln Sie es nur in einem Aufruf von char ausdrücklich als String zu gieße

['string', char(45)] 
% string- 
Verwandte Themen