Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Softwareentwickler (m/w) für automatische Codegenerierung
Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink im Bereich Fahrwerkregelsysteme
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Entwicklungsingenieur (m/w) für modellbasierte Softwareentwicklung
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Resident-Ingenieur (w/m) Hardware-in-the-Loop-Simulation
Inbetriebnahme und Software-Anpassungen der HIL-Systeme
dSPACE GmbH - Wolfsburg

Test-Ingenieur (m/w) für Resimulation
Implementierung, Integration und Anpassung von sogenannten ADTF-Filtern
Automotive Safety Technologies GmbH - Ingolstadt

Hardware Entwickler (m/w)
Bestückung, Inbetriebnahme, Planung und Durchführung von Tests
Innoventis GmbH - Würzburg

weitere Angebote

Partner:


Vermarktungspartner


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: 17.535
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     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: 17.535
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2017 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.