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

Zuweisung innerhalb einer anonymen Funktion?

 

cowfish

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2010, 11:06     Titel: Zuweisung innerhalb einer anonymen Funktion?
  Antworten mit Zitat      
Hallo!

aus Performance gründen würde ich gerne die Funktion overlay die bisher in einer .m Datei definiert ist durch eine anonyme Funktion ersetzen.

So siehts im moment aus:
Code:

function ab = overlay(a, b)
 ab = b; ab(a ~= -1) = a(a ~= -1);
end


Beispiel:

a = [0 1 -1 0 1 -1];
b = [1 -1 1 1 -1 1];

overlay(a,b)

=> ab = 0 1 1 0 1 1;


Meine Idee für eine anonyme Funktion ist das hier:

Code:
s = @(a,b) b(a~=-1) = a(a~=-1)


Wird aber mit folgender Fehlermeldung quitiert:
Error: The expression to the left of the equals sign is not a valid target for an assignment.

Gibt es irgendwelche Tricks um dieses Problem zu umgehen?

Grüße cowfish!


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.04.2010, 11:17     Titel:
  Antworten mit Zitat      
Hallo,

Anonyme Function Handles sind in erster Linie dann geeignet, wenn es um einen Befehl geht - bei dir sind es zwei. Allerdings kann das in diesem Fall so umgangen werden:

Code:
s = @(a,b) b + (a~=-1).*(a-b)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 21.04.2010, 11:22     Titel:
  Antworten mit Zitat      
Hallo,

1) innerhalb einer anonymer Funktion sind keine Zuweisungen möglich
2) für diese Zeile brauchst du doch keine Funktion
es geht doch so:
Code:

ab=b; ab(a~=-1)  = a(a~=-1)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
cowfish

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2010, 11:52     Titel:
  Antworten mit Zitat      
Super danke!

Das ich nicht unbedingt eine Funktion brauche ist klar, es macht einfach nur das gesamt Bild des Codes schöner Wink


Leider musste ich feststellen das die anonyme Funktion kein Stück performanter ist Sad
 
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.