Matlab Matrizendarstellung < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 13:12 Di 20.11.2007 | Autor: | petronas |
Hallo!
ALso folgendes. Ich muss ein Programm für Matlab schreiben , das mir eine Binäre Zahl in eine Dezimalzahl umrechnet. Wie das aufm Blatt funktioniert weiß ich abe rum es in Matlab umzusetzen, muss mir das Programm von der eingegebenen Binären Zahl alle Stellen erkennen, so dass ich sie mit der Bitdarstellung (2hoch0, 2hoch1, 2hoch2,....) umrechnen kann. Ich habe schon überall gesucht aber keins der zahlreichen pdf Files über Matlab kann mir da weiter helfen.
Danke schon im vorraus
Grüsse
Chris
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
mit fallen spontan 4 Möglichkeiten ein:
1. Du gibst deine Binärzahl direkt als Vektor ein (die billigste Lösung):
b = [1 0 0 0 1 0 1 0 1];
2. Du gibst deine Binärzahl ein, als sei sie eine Dezimalzahl und dividierst wiederholt durch 10, speicherst den Rest jeweils in einem Vektor.
b = 100010101;
3. Du gibst deine Zahl als String ein:
b = '100010101';
Hier hast du sie dann gleich als Vektor vorliegen, also leicht zu bearbeiten.
4. Du gibst deine Zahl wie bei 2. ein und wandelst sie dann in einen String um:
b = 100010101;
bstr = num2str(b);
Hier landest du wieder bei 3.
Beachte, dass 1.,3. und 4. eine andere Reihenfolge liefern als 2.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 13:29 Mi 21.11.2007 | Autor: | petronas |
Hallo!
Erstmal vielen Dank für die Antwort.
Ich habe alles versucht,was du geschirben hast, schaffe es abe rnicht das ich danach von de reingegebenen Binärzahl einzelne Ziffern herrausnehmen kann. mUss abe rzugeben das ich Tip 2 nicht so ganz verstehe. Meinst du einfach eine Dezimalzahl eingeben?
Mit b(1,1) nehme ich ja die 1. stelle aus dem Vektor raus.
bei b= 1001101 wäre das ja dann 1
aber Matlab lierfert mir als Antwort immer nur die komplette Zahl b.
Nochmals Danke
Grüsse
Chris
|
|
|
|
|
Hallo,
> Ich habe alles versucht,was du geschirben hast, schaffe es abe rnicht das ich danach von de reingegebenen Binärzahl einzelne Ziffern herrausnehmen kann. mUss abe rzugeben das ich Tip 2 nicht so ganz verstehe. Meinst du einfach eine Dezimalzahl eingeben?
Ja. Allerdings ist 2. die einzige Methode, bei der man die einzelnen Ziffern nicht per Index extrahieren kann. Deswegen müsstest du sie durch das Dividieren erst "analysieren" und währenddessen ein Array mit den Divisionresten füllen.
> Mit b(1,1) nehme ich ja die 1. stelle aus dem Vektor raus.
> bei b= 1001101 wäre das ja dann 1
> aber Matlab lierfert mir als Antwort immer nur die komplette Zahl b.
Wenn du es so einfach habe willst, dann schlage ich 4. (mit einer kleinen Erweiterung) vor:
bin_temp = 11001001;
b = double(num2str(bin_temp) - 48);
Dann liegen in b die einzelnen Ziffern von bin_temp als Vektor vor.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:15 Do 22.11.2007 | Autor: | petronas |
Ok hat funktionert. Vielen Dank
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:11 Do 22.11.2007 | Autor: | Martin243 |
Bitte schön!
Jetzt, wo du es hast, mein kürzester Weg zur Dezimaldarstellung:
bb = double(num2str(b)-48);
dec = sum(bb.*2.^(length(bb)-1:-1:0));
Gruß
Martin
|
|
|
|