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

2 Spalten mergen ....

 

joekey
Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 30.12.2008, 02:28     Titel: 2 Spalten mergen ....
  Antworten mit Zitat      
Hallo,

ich hätte folgendes Problem:

ich habe Vector a und b:

a = [0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 ]';
b = [0 0 0 0 -1 -1 -1 -1 0 0 0 -1 -1 -1 -1 0 0 0]';

und versuche sie zu mergen, und zwar so, dass das Ergebnis wie folgt ausschaut:

result = [0 0 1 1 -1 -1 -1 -1 0 1 1 -1 -1 -1 1 1 1 1]';

Hätte da jemand eine Idee?

Danke Joe
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.12.2008, 10:24     Titel:
  Antworten mit Zitat      
Bis auf das Vorzeichen ist das doch eine or-Verknüpfung, ich würde es einfach so machen:
Code:
a = [0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 ]
b = [0 0 0 0 -1 -1 -1 -1 0 0 0 -1 -1 -1 -1 0 0 0]
c=bitor(a,abs(b));
c(b==-1)=-1
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 30.12.2008, 22:45     Titel:
  Antworten mit Zitat      
Hallo,

danke. Ich habe mir schon gedacht, dass es wahrscheinlich eine einfache Lösung gibt.

Allerdings ist das setzen von dem Vorzeichen nicht ganz korrekt. c(15) sollte 1 sein und nicht -1, da ein neuer 1er-Block angefangen hat. Das setzen von Vorzeichen kann nicht direkt von b abgeleitet werden (c(b==-1)=-1)

Immer wenn ein neuer Block (1 oder -1) anfängt, wird der Vorzeichen bei c übernomen.

LG Joe
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.12.2008, 11:24     Titel:
  Antworten mit Zitat      
joekey hat Folgendes geschrieben:
Allerdings ist das setzen von dem Vorzeichen nicht ganz korrekt. c(15) sollte 1 sein und nicht -1
LG Joe

Das hatte ich auf einen Tippfehler Deinerseits geschoben...

joekey hat Folgendes geschrieben:
, da ein neuer 1er-Block angefangen hat. Das setzen von Vorzeichen kann nicht direkt von b abgeleitet werden (c(b==-1)=-1)

Immer wenn ein neuer Block (1 oder -1) anfängt, wird der Vorzeichen bei c übernomen.
Das hätte ich schon im ersten Posting dazugeschrieben...
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 06.01.2009, 19:15     Titel:
  Antworten mit Zitat      
Hallo,

möglicherweise hast du Recht, ich könnte es genauer beschreiben. Auf jeden Fall hast du mich trotzdem mit deiner Lösung weiter gebracht.

In diesem Zusammenhang habe ich noch ne Frage: kann man von 2 Vektoren, bei denen eins die Multiplizität darstellt und der andere das Wert ein Ergebniswektor erstellen (ohne for Schleife zu benutzen).

mult = [2 3 1 3 4 2 1];
val = [1 -1 1 -1 1 1 -1];
res = [1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1]

Danke für eure Hilfe

Joe
Private Nachricht senden Benutzer-Profile anzeigen
 
joekey
Themenstarter

Forum-Century

Forum-Century


Beiträge: 169
Anmeldedatum: 03.04.08
Wohnort: Wien
Version: 2011b
     Beitrag Verfasst am: 06.01.2009, 19:30     Titel:
  Antworten mit Zitat      
Hallo,

bin selbst draufgekommen.

Code:

mult = [2 3 1 3 4 2 1];
val = [1 -1 1 -1 1 1 -1];
%res = [1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1]
ret = arrayfun(@(x,y) y*ones(1,x),mult, val,'uni',false);
cat(2,ret{:})
 


LG Joe
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 - 2024 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.