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 Stellen/Indices eines Vektors miteinander addieren

 

Ristrafil
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2021, 12:32     Titel: 2 Stellen/Indices eines Vektors miteinander addieren
  Antworten mit Zitat      
Hallo zusammen,
hier ist mein kleines Anliegen. Vielen dank für eure Hilfe und Ratschläge.

Ich habe eine A: Jetzt möchte ich diese anders darstellen zu einer Matrix B. Diese Matrix B soll - je Zeile- 2 indices miteinander addieren, wobei bei der addition der gespeicherte Wert der letzten Addition verwendet werden soll. ABER die zahl an der ersten stelle bleibt stehen. Das unten angegebene Beispiel sollte die Logik eig. gut erklären

z.B.

A = [ 2 4 5 4; 1 2 3 4] --> B = [ 2 6 11 15; 1 3 6 10]

Wie kommt die erste Zeile aus der Matrix B beispielsweise zustande?
1 Stelle: Zahl bleibt stehen !!
2 Stelle: 1 + 2 = 3
3 Stelle: 3 + 3 = 6
4 Stelle: 6 + 4 = 10

Vielen Dank für eure Hilfe Smile

LG
Ristrafil
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 17.02.2021, 12:51     Titel:
  Antworten mit Zitat      
Gibt es irgendwelche Vorgaben, wie es zu lösen ist?

Mit Schleifen, Zuweisung über Indexe oder nur ganz doof und langweilig cumsum?
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2021, 12:54     Titel:
  Antworten mit Zitat      
Hallo Martina,

es gibt keine Vorgaben wie es gelöst wird.

Hauptsache die matrix wird umgewandelt
dankeschön

lg ristrafil
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2021, 12:56     Titel:
  Antworten mit Zitat      
ok passt mit cumsum geht das ja easy....

vielen dank martina
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 17.02.2021, 12:56     Titel:
  Antworten mit Zitat      
Ristrafil hat Folgendes geschrieben:
ok passt mit cumsum geht das ja easy....

vielen dank martina


deshalb schrieb ich ja doof und langweilig! Laughing
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2021, 13:27     Titel:
  Antworten mit Zitat      
So ich hab zu dem Thema nochmal ne zusätzliche frage - sorry
wenn wir das beispiel von vorhin betrachten, bei dem die Matrix B das Ergebnis ist nach dem cumsum-Befehl.

A = [ 2 4 5 4; 1 2 3 4] --> B = [ 2 6 11 15; 1 3 6 10]

JETZT will ich das aber duplizieren im folgendem Sinne. ich betrachte die 1 Zeile aus B, welche 4 zahlen hat: Ergebniss nach "duplikation" ist Matrix C.

C = [ 2 6 11 15 17 23 34 51]

Die 1 Zeile hat jetzt 8 Zahlen, wobei die 4 zusätzlichen Zahlen durch Addition entstanden sind.
15 +2 = 17
17+6 = 23
23+ 11 = 34
34+15 = 51

ich hoffe ich habe es verständlich ausgedrückt

danke

lg ristrafil
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2021, 13:30     Titel:
  Antworten mit Zitat      
und ich möchte das quasi in jeder zeile meiner matrix beliebig oft machen...
wobei die zahlen die ich zur addition nehme, bei jedem duplikationsschritt sind immer die aus dem cumsum-befehl

in dem beispiel eben immer: +2 +6 +11 +16

lg ristrafil
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2021, 14:35     Titel:
  Antworten mit Zitat      
das ist bis jetzt mein Ansatz:
Code:

a = [ 2 4 5 4];
b = cumsum(a);

for x = 2:1:3
    aa = b(4) + b(1);
    bb = aa + b(2);
    cc = bb + b(3);
    dd = cc + b(4);
    c = horzcat(b,aa,bb,cc,dd)
    b(4) = c(4*x);
end
 


als FALSCHES ergebniss bekomme ich
c = 2 6 11 15 17 23 34 49
c = 2 6 11 49 51 57 68 117

RICHTIGES ERgebniss wäre - 1 Zeile!
c = 2 6 11 15 17 23 34 49 51 57 68 117
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 17.02.2021, 17:25     Titel:
  Antworten mit Zitat      
Dein erstes Ergebnis ist richtig.
Du hast dich verrechnet.

Ristrafil hat Folgendes geschrieben:

Die 1 Zeile hat jetzt 8 Zahlen, wobei die 4 zusätzlichen Zahlen durch Addition entstanden sind.
15 +2 = 17
17+6 = 23
23+ 11 = 34
Falsch: 34+15 = 51 => muss 49 sein


c = 2 6 11 15 17 23 34 49

Aber die schleife ist überflüssig kompliziert.
Du willst doch nur cumsum über b haben, und die Werte um 15 erhöht und an b angehängt.

Code:

a = [ 2 4 5 4];
b = cumsum(a);
c = [b,cumsum(b)+15]

 

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2021, 12:50     Titel:
  Antworten mit Zitat      
Hallo Martina,

vielen Dank für deine Hilfe - ich hab das echt zu kompliziert gemacht Sad

Ich hänge jetzt noch an der frage wie ich daraus eine Schleife machen kann, sodass ich das beliebig oft duplizieren kann..

wenn ich was habe werde ich mal mein Ansatz reinposten


LG
Ristrafil
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2021, 13:27     Titel:
  Antworten mit Zitat      
so das wäre mal mein Ansatz für den Anfang..

Code:

a = [ 2 4 5 4];
b = cumsum(a);

dupliziert_1 = [b,cumsum(b)+15];
dupliziert_2 = [dupliziert_1, cumsum(b)+49];
dupliziert_3 = [dupliziert_2, cumsum(b)+83];
 


ich hab jetzt z.B. 3 mal dupliziert. muss aber eben für jede weitere duplikation eine neue zeile schreiben, wenn ich das 100 mal duplizieren will sprengt das natürlich den rahmen.

die 49 und 83 kommen zustande, indem ich immer +34 rechne (wegen der Abfolge einfach): 15+34 = 49 usw...
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 19.02.2021, 13:54     Titel:
  Antworten mit Zitat      
Erkennst du denn, wie das ganze funktioniert?
Was tust du denn derzeit?

Beschreibe das doch mal für dich. Schritt für Schritt.

Ristrafil hat Folgendes geschrieben:

die 49 und 83 kommen zustande, indem ich immer +34 rechne (wegen der Abfolge einfach): 15+34 = 49 usw...

Ja, aber es geht einfacher. Die Werte sind doch alle da.
Gib sie dir mal aus und schaue sie dir genau an.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2021, 15:09     Titel:
  Antworten mit Zitat      
ok - ich hab deinen Rat befolgt und mir nochmal alles in Ruhe angeschaut. Ich verstehe das jetzt folgendermaßen.

wenn ich weiter duplizieren möchte wird jede zahl immer um die selbe zah vergrößert - in unserem fall um +34*i ( i = 3 wenn ich z.B. 3 mal duplizieren will). diese zahl 34 kann ich mir ja immer raussuchen - in meinem Ansatz heist das jetzt Duplikationswert.

Code:

a = [ 2 4 5 4];
b = cumsum(a);
bb = cumsum(b);
Duplikationswert = bb(end);
val = b(end);

dupliziert_1 = [b,cumsum(b)+val]; %einmal_dupliziert

for i = 1:1
    dupliziert = [dupliziert_1, cumsum(b)+(val+Duplikationswert*i)]; %zweimal_dupliziert
end
 


wenn ich aber die forschleife auf 1:2 stelle - passts wieder nicht.

ist mein Ansatz mit dem "Duplikationswert" richtig? oder bin ich da wieder komplett falsch und denke zu kompliziert?

tut mir leid ich bin nicht so der experte ;(

trotzdem danke für die Denkansätze

lg ristrafil
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 19.02.2021, 15:40     Titel:
  Antworten mit Zitat      
Müsste vermutlich auch mit deiner Denkweise irgendwie gehen.
Aber es geht viel einfacher: den letzten Wert des alten Vektors zur cumsum addieren.
Und das einfach an den Vektor anhängen.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2021, 11:25     Titel:
  Antworten mit Zitat      
Hallo Martina,

ja stimmt so geht es auch - super danke dir Smile
Ich hab jetzt trotzdem noch Probleme das in eine schleife zu packen, sodass ich selbst , vor dem start des Programms, entscheiden kann wie oft ich das duplizieren möchte.

quasi:
ich gebe z.b. x = 4 ein - und es wird 4mal dupliziert.

da hänge ich jetzt noch bisschen Sad

hast du / oder hat jemand da noch ein kleinen Tipp/Denkanstoß wie ich das formulieren könnte.

lg Ristrafil
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.