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

Zahlen an verschiedenen Stellen einer Matritze speichern

 

runningp
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2017, 12:21     Titel: Zahlen an verschiedenen Stellen einer Matritze speichern
  Antworten mit Zitat      
Hallo zusammen,

leider sitze ich schon etwas länger an folgendem Problem und hoffe ihr könnt mir weiterhelfen.

Ziel sollte sein den Wert an den Stellen X zu verdoppeln ohne dass sich der weitere Verlauf der Matrix ändert

Als Beispiel: Für Stelle X=3: vorher A = [9 8 7 6] nachher A=[9 8 7 7 6]

Soweit so einfach, doch jetzt kommt die Problematik: Dies soll für alle Stellen der Matrix an den stellen X=3,6,9,12,15....n passieren.

Mein bisheriger Ansatz schaut wie folgt aus.

Code:

nk=0;
for k=1:2
    nk=nk+2;
 A = [13 26 39 40 10 90 10 77 11 51]
 N = [nk]; % gibt Stelle an
 v = [A(nk)]; % speichert Wert an der Stelle
 B = [A(1:N-1) v A(N:end)]
 
 
 punkte(k)=v;
 PunkteN(k)=N;
 
 end
 


Das Problem hierbei ist, dass nur der letzte k-Wert der Schleife in Matrix B gespeichert wird und nicht alle k-Werte.

Über jede Hilfe wäre ich dankbar

Viele Grüße

Run
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.05.2017, 13:15     Titel:
  Antworten mit Zitat      
Hallo,

es kann einfacher sein, die Schleife rückwärts laufen zu lassen, damit es keine Probleme mit Indexverschiebungen gibt.

Bei deinem Code ist zudem das Problem, dass A jedes Mal überschrieben wird (sollte außerhalb der Schleife definiert werden) und B nicht weiterverwendet wird (ich würde A überschreiben).

Es ist immer hilfreich, wenn Beispiel und Code zusammenpassen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
runningp
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2017, 13:45     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:


Es ist immer hilfreich, wenn Beispiel und Code zusammenpassen.

Grüße,
Harald


Hallo Harald,

danke für deinen Lösungsvorschlag, um nochmal mein Vorhaben etwas zu konkretisieren pass ich das Beispiel dem Code an.


Code:
A = [9 8 7 6 5 4 3 2 1 0]
nk=0;
for k=1:3
    nk=nk+3;
 
 N = [nk]; % gibt Stelle an
 v = [A(nk)]; % speichert Wert an der Stelle
 B = [A(1:N-1) v A(N:end)]
end
 


Ergebnis soll sein: B= [9 8 7 7 6 5 4 4 3 2 1 1 0]

jedoch wird bei meiner Programmierung der erste Schleifenwert mit dem zweiten und zu letzt mit dem dritten überschrieben (siehe "Command Window"-Ausgabe B=[]) sodass B zwangsläufig immer das Ergebnis des letzten Schleifenwerts enthält.

Command Window:
B =

9 8 7 7 6 5 4 3 2 1 0


B =

9 8 7 6 5 4 4 3 2 1 0


B =

9 8 7 6 5 4 3 2 1 1 0


Wie könnte ich konkret meinen Code so umschreiben, dass das gewünschte Ergebnis dabei herauskommt?

Viele Grüße

Run
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.05.2017, 13:54     Titel:
  Antworten mit Zitat      
Hallo,

Code:
A = [9 8 7 6 5 4 3 2 1 0]
nk=9;
for k=3:-1:1
     
 
 N = [nk]; % gibt Stelle an
 v = [A(nk)]; % speichert Wert an der Stelle
 A = [A(1:N-1) v A(N:end)]
 nk=nk-3;
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
runningp
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.05.2017, 14:20     Titel:
  Antworten mit Zitat      
Vielen Dank Harald,

das war die Lösung!

Viele Grüße
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.