2012-03-24 15 views

Antwort

0

Das Problem ist, dass dec2bin eine Zeichenfolge zurückgibt, kein Zahlenvektor. Sie haben die char-Array auf ein numerisches Array zu konvertieren, und Sie tun können, dass mit arrayfun, wie folgt aus:

b = dec2bin(15); 
b_numeric = arrayfun(@(x) str2num(x), b); 
n = d.*b_numeric; 

Wenn Sie das Kommunikationssystem Toolbox haben, haben Sie bereits eine Funktion haben, die genau das tut, die de2bin

2

Das Problem, das Sie haben, ist, dass dec2bin eine Reihe von Zeichen zurückgibt. Wenn Sie die elementweise Multiplikation mit Ihrem Array d ausführen erhalten Sie die Ergebnisse der Multiplikation d elementweise durch den ASCII-Code für das Zeichen ‚1‘, der 49.

ist Wenn Sie d durch das Array multiplizieren wollen [1 1 1 1] Dies scheint wie ein verschachtelter Ansatz. Was versuchst du wirklich?

Um ein Zeichen (Array) in eine Zahl umzuwandeln, würden Sie die str2num Funktion verwenden. Hier würde die Zeichenkette "1111" in die Nummer 1111 umgewandelt, so dass str2num(dec2bin(15))1111 zurückgibt.

5

str2num funktionieren wird, aber da Sie nur eine einzelne Ziffer in jeder Zelle gewährleistet sind, können Sie

b = dec2bin(15) - 48; 

versuchen, die viel schneller sein sollte.

Hinweis: 48 ist der ASCII-Code für das Zeichen "0".

+0

Bessere Antwort als meine schlechte Leistung. Ich denke immer noch, es ist ein seltsamer Weg, einen Vektor mit 1 zu multiplizieren. –

+0

@HighPerformanceMark: Ich denke, die Annahme ist, dass "b" variabel ist, nicht immer [1 1 1 1]. –

+0

Ich erwarte, dass du recht hast. –

Verwandte Themen