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

Multiplikation pos. Werte eines Vektors mit einer Konstanten

 

B-Master
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 03.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2015, 14:18     Titel: Multiplikation pos. Werte eines Vektors mit einer Konstanten
  Antworten mit Zitat      
Servus zusammen,

ich habe ein Problem, dass sich für mich Anfänger (!) als unerwartet schwierig erweist. Für ein betriebswirtschaftliches Modell muss ich alle positiven Werte eines Zeilenvektors mit einer Konstanten multiplizieren. Die übrigen Werte des Zeilenvektors (<=0) sollen unverändert bleiben.

Das soll im Ergebnis so ausschauen:
Code:

s = 0.3; % Steuersatz
x = [-3 5 -2 1 0 6 -4]; % (+)Gewinn/(-)Verlust
y = % Berechnung?,
ans:
y = [-3 1.5 -2 0.3 0 1.8 -4] % Ergebnis nach Steuern, wobei nur Gewinne besteuert werden
 

Wichtig ist, dass die Elemente des Vektors an ihrer „Position“ bleiben!
Ich habe es bereits mit if-else versucht, aber da habe ich das Problem, dass „else“ für alle Wert des Vektors greift, sobald auch nur ein Element des Vektors die Bedingung nicht erfüllt (also entweder werden alle Werte des Vektors mit s multipliziert oder gar keine). Mit einer for-if-Schleife habe ich es auch versucht, aber da bekomme ich es nicht hin, dass im Ergebnis o.g. Vektor steht. Es werden lediglich nacheinander alle Ergebnisse berechnet (was bei einer for-Schleife wohl auch so seine Richtigkeit hat).

Ich hoffe, dass ich mein Anliegen verständlich formuliert habe und bedanke für im Voraus ganz herzlich für etwaige Hilfestellungen!

Viele Grüße
Max
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: 03.11.2015, 14:27     Titel:
  Antworten mit Zitat      
logisches indizeren ist bei sowas hilfreich.
Code:
a=[-1,0,1]
a(a>0)=a(a>0)*2

bei deiner if anweisung hast du bestimmt das hier nicht beachtet
Zitat:
An expression is true when its result is nonempty and contains only nonzero elements (logical or real numeric).

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
B-Master
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 03.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2015, 15:44     Titel:
  Antworten mit Zitat      
Grandios, besten Dank! Ich hatte gehofft (befürchtet?), dass es eine so elegante Lösung gibt Very Happy

Code:
s = 0.3; % Steuersatz
x = [-3 5 -2 1 0 6 -4]; % (+)Gewinn/(-)Verlust
x(x>0) = x(x>0).*s

% Lösung: x = [-3 1.5 -2 0.3 0 1.8 -4] --> Ergebnis nach Steuern, wobei nur Gewinne besteuert werden
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.