WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Umwandlung der Basis Programm erstellen

 

wil89
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 25.10.14
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 25.10.2014, 17:10     Titel: Umwandlung der Basis Programm erstellen
  Antworten mit Zitat      
Hi Leute, mein PROF Hat mir wieder Tasks gegeben in MATLAB, ich bin naemlich nicht ganz sicher, ob diese Lösung richtig ist oder nicht; da ich Neueinsteiger bin

Die Aufgabe besteht drin, ne natuerliche Nummer in binaere Zahl umzuwandeln .Daher wollt ich ma eure Meinung hoeren drueber.
habe kein MATLAB zuhause,noch nicht getestet. Will nur ueber Syntax reden.

Code:
% Das ist mein Programm.

 function Bin = bin(a)
z = [];
b = a;
while a >= 1;
    a = b/2;
    if  mod (a,2) == 0;
        x = 0;
        z = [z x];
    elseif  mod (a,2)~= 0;
        x = 1;
        z = [z x];
    end
    b = floor(a);
end
Bin = [];
for i = length(z):-1:1;
    Bin = [Bin z(i)];
end
     

lg
Willi.
_________________

Do all things as well as u can.
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2014, 17:28     Titel:
  Antworten mit Zitat      
Vieles geht in Matlab auch einfach mit einem Befehl: http://www.mathworks.de/help/matlab/ref/dec2bin.html

Code:
for i = length(z):-1:1;
    Bin = [Bin z(i)];
end

Das könntest Du bei flüchtiger Betrachtung einfach durch ein fliplr() ersetzen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2014, 18:37     Titel: ? help fliplr
  Antworten mit Zitat      
fliplr ( Bin ) , meinst du?Danke. Lg. Wil89.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.10.2014, 22:48     Titel: Re: Umwandlung der Basis Programm erstellen
  Antworten mit Zitat      
Hallo wil89

Zitat:
Will nur ueber Syntax reden.

Du brauchst keine Semikolons hinter den Befehlen WHILE und IF, da sie keine Ausgabe haben.
Die Hilfsvariable b wird gar nicht benötigt, Du kannst gleich mit a alleine arbeiten.
Wenn Du "if x==0" bereits getestet hast, brauchst Du kein "elseif x~=0", sondern ein "else" reicht aus.
Statt z zum Schluß umzudrehen, könntest Du es gleich in der gewünschten Reihenfolge erzeugen:
Code:
function z = bin(a)
z = [];
while a >= 1
    a = a / 2;
    if  mod (a,2) == 0
        z = [0, z];
    else
        z = [1, z];
    end
    a = floor(a);
end

Das liesse sich nun noch weiter vereinfachen, da man die IF-Unterscheidung weglassen kann. Aber ein Problem bleibt: Das Ergebnis stimmt nicht. bin(2) ergibt [1,1]. asd(4) ergibt [1,1,0].

Viel Erfolg, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
wil89
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 25.10.14
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 08.11.2014, 09:42     Titel: Octave Installation Fehler
  Antworten mit Zitat      
also, danke erstmal fuer Antwort, seit letztem Wochenende ist Octave bei mir installiert ,ich habe auch versucht, diese auszufuehren
function Bin = bin(a)
z = [];
b = a;
while a >0
a = b/2;
if mod (a,2) == 0
x = 0;
z = [z x];
else
x = 1;
z = [z x];
b = floor(a);
endif
end
Bin = [];
for i = length(z):-1:1;
Bin = [Bin z(i)];
end
endfunction

aber das Octave stuerzt immer ab, bei diesem Code aber

function f = dectobin(x)
f = mod(x,2);%speichert den Rest bei Division durch 2 - Initialisierungswert fuer f
x = floor(x/2);%teile durch 2 und runde nach unten, wenn keine ganze Zahl
while x > 0
p = mod(x,2); %speichert den Rest bei Division durch 2
x = floor(x/2); %teile durch 2 und runde nach unten, wenn keine ganze Zahl
f = strcat(num2str(p),num2str(f)); % konkateniere den neuen Rest p mit den anderen Resten,
%die schon festgestellt sind(p und f muessen Strings sein, damit man sie
%konkatenieren mit strcat kann)
end

%fuer n = 100 ergibt sich 1100100
%fuer n = 4356 ergibt sich 1000100000100
%fuer n = 14 ergibt sich 1110
%fuer n = 123456 ergibt sich 11110001001000000
läuft alles fehlerfrei .
Nu, warum ist das so? Hat jmd Beleuchtung ?Irgendeine Mist gebaut<P?

DANKE, #
mfg
Wil89
_________________

Do all things as well as u can.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.