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

binäre Matrix aus Vektor erstellen

 

lolaZ
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2016, 16:32     Titel: binäre Matrix aus Vektor erstellen
  Antworten mit Zitat      
Hi,

ich bin neu hier bzw. fange gerade erst an mich mit Matlab auseinander zu setzen und habe eine Frage.

Gibt es eine Möglichkeit aus einem gegebnenen Vektor bspw.

2 0 3 1,

eine entsprächende Matrix zu erstellen die jeweils nur eine 1 pro Zeile hat also

1 0 0 0
1 0 0 0
0 0 0 0
0 0 1 0
0 0 1 0
0 0 1 0
0 0 0 1

wäre sehr dankbar für Hilfe jeglicher art da ich nicht weiter komme. Dankeee!!
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 26.04.2016, 16:37     Titel:
  Antworten mit Zitat      
auf die frage ob es eine möglichkeit gibt lautet die antwort meist ja.
wo kommst du denn genau nicht weiter? welche fehler treten bei deinem versuch auf? oder wie weicht das verhalten vom gewünschten ab?
sihe dazu auch den thread aus meiner signatur.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
lolaZ
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2016, 16:52     Titel:
  Antworten mit Zitat      
naja, ich komme gar nicht weiter... ich denke mal es müsste mir nem reshape Befehl funktionieren, aber habe nicht die leiseste Ahnung wie der lauten soll... wie gesagt weiss im grunde absolut nichts über matlab!

PS: aber schön zu wissen dass die Antwort JA lauten "könnte" Razz ...
Private Nachricht senden Benutzer-Profile anzeigen
 
lolaZ
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2016, 16:57     Titel:
  Antworten mit Zitat      
Vielleicht ist es nicht ersichtlich, aber die Summe der EINSER der Matrixspalten sollte dem entsprechenden Eintrag des Vektorts entsprechen...

Sorry wie gesagt... ist auch das erste mal dass ich ins Forum poste... von daher klingt die Frage vermutlich nicht allzu gekonnt gestellt... Embarassed
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.04.2016, 17:01     Titel: Re: binäre Matrix aus Vektor erstellen
  Antworten mit Zitat      
Hallo lolaZ,

Wieso erzeugt die 0 eine Zeile mit Nullen? Das widerspricht dem "in jeder Zeile nur eine 1", oder?
Hast Du schon überhaupt irgendetwas probiert? Dann poste doch mal den Code. Es ist immer einfacher zu verbessern, als alles zu schreiben. Vorallem trifft man dabei auch eher das, was Du Dir vorgestellt hast.

Trotzdem mal ein Schuss ins Blaue:
Code:
v = [2,0,3,1];

n    = sum(v) + sum(v==0);
len = numel(v);
M   = zeros(n, len);  % Pre-allocate!
ci    = 1;
for k = 1:len
  if v(k) ~= 0
    cf = ci + v(k);
    M(ci:cf-1, k) = 1;
    ci = cf;
  else
    ci = ci + 1;
  end
end

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 26.04.2016, 17:04     Titel:
  Antworten mit Zitat      
wenn du noch nie mit matlab gearbeitet hast kann ich das getting startet aus der doc oder matlab onramp empfehlen. da werden die meisten anfängerfragen beantwortet und ein sinnvolles arbeiten ist ohne grundkentnisse eigendlich nicht möglich. die grundlagen können wir dir auch nicht besser erklären
die für anfänger einfachste möglichkeit is meist eine for schleife. du musst also nur nachgucken wie so eine schleife funktioniert und wie man matrixelemente adressiert und deine aufgabe ist gelöst.
versuch es doch einfach mal und poste dann den versuch das wir verbesserungsvorschläge machen können.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
lolaZ
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2016, 18:23     Titel: Re: binäre Matrix aus Vektor erstellen
  Antworten mit Zitat      
Habs jetzt mal mit dem was du [Jan] geschrieben hast versucht und klappt eigentlich ganz gut... müsste nur noch das n auf die sum(v) begrenzen... daher auf die Summe der Vektoreinträge (daher auch die begrenzung der 1 pro zeile habe ein einwenig unpassendes bespiel genommen).

also in Wirklichkeit handelt es sich um einen v = (1,43.200) in dem die Summe der Einträge ca 5000 ergibt daher ist das alles n bissl bescheiden.

Aber danke für die schnellen Antworten. Und jaaaaa... ich werde mich wohl die nächsten tage ein wenig mehr mit matlab auseinander setzen müssen, bis dato hab ich mir immer nur dinge rausgepickt die ich gebraucht habe... aber auf dauer bringt das nicht wirklich viel. Werde versuchen selbst irgendwie was zu konstruieren und meld mich dann vermutlich die Tage noch mal Confused

[EDITED, Jan, Bitte kein Top-Quoting - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
lolaZ
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 26.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2016, 18:07     Titel:
  Antworten mit Zitat      
Smile so... habs jetzt gelöst und zwar...

Code:
n    = sum(T,2);
len = numel(T);
Mat1   = zeros(n, len);  
ci    = 1;
for k = 1:len
  if T(k) ~= 0
    cf = ci + T(k);
    Mat1(ci:cf-1, k) = 1;
    ci = cf;  
  end
end

Zeilenanzahl begrenzt auf die Summe der Zeileneinträge und keine Nullzeilen! Smile falls es schöner geht bin offen für Vorschläge!

Gruß und nochmals danke Smile
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.