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

Elemente in einem Vektor ersetzten

 

oehri
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2015, 22:59     Titel: Elemente in einem Vektor ersetzten
  Antworten mit Zitat      
Hallo zusammen

Ich sehe vor folgenden Problem:

A = [4, 2, 3, 1]

Ich möchte nun im Vektor A die Zahl durch 1.5 ersetzen, Zahlen 2 -3 durch 1 und 4 durch 0.5 ersetzen.

Nach der Ersetzung soll der neue Vektor wie folgt aussehen:

A_w = [0.5, 1, 1, 1.5]

Ist dies mit einem einfachen Code zu erreichen? Ich habe bereits mit find(...) gearbeitet und bin nicht zum gewünschten Ziel gekommen.

Danke und Gruss
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: 22.04.2015, 23:03     Titel:
  Antworten mit Zitat      
Zitat:
? Ich habe bereits mit find(...) gearbeitet und bin nicht zum gewünschten Ziel gekommen.

ohne code beispiel ist nur schwer zu sagen was schief gelaufen ist. außerdem ist dein minimalbeispiel sehr minimal Smile sind bereiche gegeben die ersetzt werden sollen oder entsprichte jede zahl einer anderen zahl oder wie soll die umwandlung erfolgen?
am besten du postest mal den code den du versucht hast und schilderst wie das ergebniss vom gewünschtem abweicht.
grüße
p.s. bitte den thread aus meiner signatur lesen falls das noch nicht gemacht wurde:)
_________________

richtig Fragen

Zuletzt bearbeitet von Winkow am 22.04.2015, 23:04, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.04.2015, 23:03     Titel:
  Antworten mit Zitat      
Hallo,

wenn A ganzzahlig und aufeinanderfolgend ist:
Code:
vals = [1.5 1 1 0.5]
A_w = vals(A)


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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2015, 00:08     Titel:
  Antworten mit Zitat      
Hallo

Danke für die Antwort.

Matrix A ist variable kreiiert. D.h. die Länge des Vektors kann variieren zwischen 1 bis 500. Dabei wird die Grenze die ersetzt wird auch Variable gegeben.

Mit Size() lese ich die Länge des Vektors aus und bestimmte z.B. dass alle Werte bis zur Grenze des 1. Quartil mit 1.5 ersetzt werden soll bzw. werte ab dem 4. Quartil durch 0.5.

Beispiel:

A = [5, 3, 6, 9, 8, 17, 18, 20, 1, 2, 4, 7, 10, 12, 15, 11, 14, 13, 19, 16]

Das erste Quartil beginnt also bei 1 bis 0.25*size(A,2) = 0.25*20=5 --> 1 bis 5
Das vierte Quartil beginnt bei 0.75*size(A,2)=0.75*20 =15 bis 20 --> 15 bis 20

Im nächsten Schritt sollen nun alle Werte 1 bis 5 durch 1.5, Werte 6 bis 14 durch 1 und Werte 15 bis 20 mit 0.5 ersetzt werden.

Ziel Matrix schaut dann so aus:

B = [1.5, 1.5, 1, 1, 1, 0.5, 0.5, 0.5, 1.5, 1.5, 1.5, 1, 1, 1, 0.5, 1, 1, 1, 0.5, 0.5]

Wichtig ist hier, dass sich der Ort der Elemente des Vektors nicht ändern. Der Vektor B wird nämlich zur Gewichtung eines anderen Vektor benötigt.

Danke für Eure Hilfe.
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: 24.04.2015, 09:12     Titel:
  Antworten mit Zitat      
du vermischt hier irgendwie index mit inhalt der variablen. das ist mir noch nicht ganz klar.
du teilst deine klassifizierung nach dem index der variablen ein aber dann ordnest du sie nach dem inhalt zu.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
oehri
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 12.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2015, 21:51     Titel:
  Antworten mit Zitat      
Gibt es aber keine Möglichkeit diese Werte zu ersetzen? in Excel wäre das ja überhaupt kein Problem mit einer "wenn" formel.

=wenn(A2<=5;1.5;wenn(und(A2>5;A2<15);1;0.5))

Dann einfach auf alle Zellen ziehen und fertig.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.04.2015, 22:39     Titel:
  Antworten mit Zitat      
Hallo,

das Hauptproblem ist in dem ganzen Wust zu verstehen, was du willst. Auf meinen Vorschlag bist du z.B. nicht direkt eingegangen. Neuer Versuch:
Code:
A(A <=5) = 1.5;
A(A > 5 & A <= 15) = 1;
...


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