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

Mithilfe von varargin figure öffnen und bearbeiten

 

trust114
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2016, 19:25     Titel: Mithilfe von varargin figure öffnen und bearbeiten
  Antworten mit Zitat      
Hallo liebes Forum,

hab ne Frage zu MatLab und bin echt am verzweifeln.

Ich habe ein Skript geschrieben in dem ein Körper über den Befehl patch geplottet wird und anschließend als eine figure abgespeichert wird, d. h. mit File.fig am Ende. Soweit so gut.

Nun will ich in einem anderen Skript eine Funktion schreiben die genau diese Figure aus dem Workspace aufrufen soll und eventuell einige Dinge wie Farbe oder Linienstärke (Falls ein Graf vorkommt) etc. verändern kann. Kann mir jemand dazu einen Ansatz geben.

Bin für jede Hilfe dankbar!


Hab so angefangen wie im Beispiel:

Code:
function Untitled(varargin)
   fprintf('Number of arguments: %d\n',nargin)
   celldisp(varargin)
   


Und Eingabe dann so:
Code:
Untitled(Bild1)


Zuletzt bearbeitet von trust114 am 23.01.2016, 19:35, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 23.01.2016, 19:34     Titel:
  Antworten mit Zitat      
Hallo,

mit diesen Befehlen würde ich mich mal näher befassen:

Code:

figure_handle = openfig('filename.fig'); % fig file öffnen

hline = findobj(figure_handle, 'Type', 'Line'); % line handle

set(hline,'Color','Farbe für Linie','LineWidth',2); % Farbe und Linienstärke ändern
 


Gruß DSP
Private Nachricht senden Benutzer-Profile anzeigen
 
trust114
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2016, 19:39     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort DSP!

Bleiben wir mal ganz kurz bei deinem 1. Punkt. Dem Öffnen. Was genau würdest du denn da in deine Funktion reinschreiben? Meinen jetzigen code hab ich auch eingefügt.

Ich habe leider extreme Probleme mit Funktionen, alles andere ist ganz oK.

Schönen Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 23.01.2016, 19:47     Titel:
  Antworten mit Zitat      
Ehrlich gesagt verstehe ich deinen Code nicht im Zusammenhang zu deinem Problem.

Zitat:
Nun will ich in einem anderen Skript eine Funktion schreiben die genau diese Figure aus dem Workspace aufrufen soll und eventuell einige Dinge wie Farbe oder Linienstärke (Falls ein Graf vorkommt) etc. verändern kann.


Dafür sind meine Vorschläge nützlich. Wozu die Funktion nun ein varargin benötigt, verstehe ich nicht. Das nutzt man eigentlich nur, wenn die Inputparameter der Funktion von unterschiedlicher Anzahl sein können.

Deine Funktion benötigt letztendlich den Namen und evtl. Pfad des *.fig um ihn dann öffnen und bearbeiten zu können. Das geht auch ohne varargin...

Code:

function [] = updateFigFile(FileName,FilePath)

figure_handle = openfig(fullfile(FilePath,FileName)); % fig file öffnen

hline = findobj(figure_handle, 'Type', 'Line'); % line handle

set(hline,'Color','Farbe für Linie','LineWidth',2); % Farbe und Linienstärke ändern

end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
trust114
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2016, 20:09     Titel:
  Antworten mit Zitat      
Also ich benötige leider echt dieses varargin. Ich wünschte es wäre anders. Ich schaue mir das Ganze weiter an. Und spreche dann das Thema nochmal an falls ich etwas weiter bin. Trotzdem vielen Dank DSP!
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 23.01.2016, 20:19     Titel:
  Antworten mit Zitat      
Nun, dann eben so:

Code:

function [] = updateFigFile(varargin)
% number of inputs
if nargin == 1
FileName = varargin{1};
figure_handle = openfig(FileName); % fig file öffnen

elseif nargin == 2
FileName = varargin{1};
FilePath = varargin{2};

figure_handle = openfig(fullfile(FilePath,FileName)); % fig file öffnen
end



hline = findobj(figure_handle, 'Type', 'Line'); % line handle

set(hline,'Color','Farbe für Linie','LineWidth',2); % Farbe und Linienstärke ändern

end
 


Aufruf im workspace oder anderem skript:
Code:
updateFigFile(FileName,FilePath)
Private Nachricht senden Benutzer-Profile anzeigen
 
trust114
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2016, 20:39     Titel:
  Antworten mit Zitat      
Wow, hat geklappt! Vielen Dank! Laughing

Der Filepath aus dem Workspace kenn ich leider nicht aber die Grafik mit dem Namen zu plotten funktioniert aufjedenfall.
Private Nachricht senden Benutzer-Profile anzeigen
 
trust114
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.01.2016, 12:40     Titel:
  Antworten mit Zitat      
Hi DSP,

hätte noch ne kurze Frage zu deinem obigen code:

Falls nargin==1 ist, ist es absolut verständlich. Bei nargin == 2 habe ich allerdings etwas Probleme. Wollte für das zweite Argument die Farbe meines Plots als Eingabeparameter haben und bin so vorgegangen:

Code:
elseif nargin == 2

    FileName = varargin{1};
    Farbe = varargin{2}; % Die Farbe als 2. Einabeparameter
   
    if FileName == 'Bild3File.fig'
       
        figure_handle = openfig('Bild3File.fig','new','visible');

        % Hier wollte ich versuchen die Farbe meines Plots frei wählbar zu lassen
       
           
        end
    end



end


Es ist bei Funktionen ja leider so, dass man nicht auf den Workspace zu greifen kann. Deshalb fällt es mir leider so schwer den Plot zu beeinflussen.

Schönen Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.01.2016, 13:11     Titel:
  Antworten mit Zitat      
Hallo trust114,

Der == Operator vergleich elementweise. Das ist ein Fehler, wenn die Operanden unterschiedliche Größe haben (es sei denn, einer ist ein Skalar).
Für Vergleiche von Strings ist strcmp geeignet.

Meinst Du das mit der Farbe etwa so:
Code:
elseif nargin == 2
    FileName = varargin{1};
    Farbe = varargin{2}; % Die Farbe als 2. Einabeparameter
   
    % if strcmp(FileName, 'Bild3File.fig')
    figure_handle = openfig(FileName,'new','visible');
   
    % Hier wollte ich versuchen die Farbe meines Plots frei wählbar zu lassen
    hline = findobj(figure_handle, 'Type', 'Line'); % line handle
    set(hline, 'Color', Farbe, 'LineWidth',2); % Farbe und Linienstärke ändern
end

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
trust114
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.01.2016, 15:02     Titel:
  Antworten mit Zitat      
Jep. Funktioniert. Hatte DSP ja auch schon so geschrieben. Danke nochmals an euch beide Very Happy
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.