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

Individuelles Bestimmen von Limits der X-Achse

 

el07aab
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 23.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2010, 12:50     Titel: Individuelles Bestimmen von Limits der X-Achse
  Antworten mit Zitat      
Hallo Allerseits,

Kennt sich jmd. gut mit data plots aus ?
Und zwar geht es um folgendes:

das Matlab Program liest Daten eines snp files ein, welches in geordneter Reihenfolge genau 3200 Werte zwischen 10*10^9 und 15*10^9 in gleichen Abständen und in einer Spalte auflistet.

Nun möchte ich, dass wenn die Funktion aufgerufen wird, der Benutzer selbst festlegen kann, in welchem Bereich die Funktion geplottet werden soll (zB 11.23*10^9 bis 12.4252*10^9).

ich habe das bereits mit der Funktion set(axes_handle,'XLim',[xmin xmax]); versucht, jedoch kommt immer wieder die selbe Fehlermeldung.

Ich bitte um Hilfe.

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


el07aab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 23.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2010, 13:10     Titel:
  Antworten mit Zitat      
So ich weiss jetzt woran der Fehler liegt und zwar gibt Matlab mir folgende Fehlermeldung:

??? Undefined function or variable 'axes_handle'.

d.h. wohl dass ich axes_handle als variable festlegen muss, ... aber wie ???
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.08.2010, 13:38     Titel: Re: Individuelles Bestimmen von Limits der X-Achse
  Antworten mit Zitat      
el07aab hat Folgendes geschrieben:

ich habe das bereits mit der Funktion set(axes_handle,'XLim',[xmin xmax]); versucht, jedoch kommt immer wieder die selbe Fehlermeldung.
Vielen Dank


Hallo, du musst dir die Handles bei der Erzeugung von Achsen merken. Aber dazu vielleicht poste dein Codebeispiel

zum Schnelltest eignet sich GCA, aber Achtung bei mehreren Achsen und Fenstern, kann leicht schief laufen
Code:

set(gca,'XLim',[xmin xmax]);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
el07aab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 23.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2010, 13:58     Titel:
  Antworten mit Zitat      
Ok, aber was genau sind 'handles' und wo kann ich den zu merkenden Wert denn überhaupt sehen ??
Private Nachricht senden Benutzer-Profile anzeigen
 
el07aab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 23.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2010, 14:00     Titel:
  Antworten mit Zitat      
Hier ist der Code

Code:

function [] = Hornmeas          % call function 'Hornmeas'

filename=input('datafile =  '); % Program asks for input filename

fid=fopen(filename,'r');        

C = textscan(fid, '%f %f %f', 'headerlines',6); % Scans data

fclose(fid);

Frequency = C{1};       % lists components and its values that are
Mag_dB = C{2};          % contained in the data
Phase = C{3};

% Program asks or linear or log scale representation of S-Parameters
scale = input('linear or log scale ? (lin \ log)              ');
TF = strcmp(scale, 'lin');

% Set x_axis dimensions
xaxismin = input('start frequency ?                      ');
xaxismax = input('stop frequency ?                      ');
set(162.0139,'XLim',[xaxismin xaxismax]);

% in case of linear representation execute ...
if TF == 1
    Mag_dB = 10.^(Mag_dB./20);
    subplot(2,1,1); plot(Frequency, Mag_dB);
    title('Magnitude/Frequency')
    xlabel('frequency');
    ylabel('Mag');
   
else
    subplot(2,1,1); plot(Frequency, Mag_dB);
    title('Magnitude(dB)/Frequency')
    xlabel('frequency');
    ylabel('Mag_dB');

end

subplot(2,1,2); plot(Frequency, Phase);
title('Phase / Frequency')
xlabel('frequency');
ylabel('Phase');

end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.08.2010, 14:10     Titel:
  Antworten mit Zitat      
handles sind Zeiger auf grafische Objekte

in deinen Fall sollst von deinen SUBPLOT die Adressen merken:
Code:

function [] = Hornmeas          % call function 'Hornmeas'

filename=input('datafile =  '); % Program asks for input filename

fid=fopen(filename,'r');        

C = textscan(fid, '%f %f %f', 'headerlines',6); % Scans data

fclose(fid);

Frequency = C{1};       % lists components and its values that are
Mag_dB = C{2};          % contained in the data
Phase = C{3};

% Program asks or linear or log scale representation of S-Parameters
scale = input('linear or log scale ? (lin \ log)              ');
TF = strcmp(scale, 'lin');

% Set x_axis dimensions
xaxismin = input('start frequency ?                      ');
xaxismax = input('stop frequency ?                      ');


% in case of linear representation execute ...
if TF == 1
    Mag_dB = 10.^(Mag_dB./20);
    ha1 = subplot(2,1,1); plot(Frequency, Mag_dB);
    title('Magnitude/Frequency')
    xlabel('frequency');
    ylabel('Mag');
   
else
    ha1 = subplot(2,1,1); plot(Frequency, Mag_dB);
    title('Magnitude(dB)/Frequency')
    xlabel('frequency');
    ylabel('Mag_dB');

end
set(ha1,'XLim',[xaxismin xaxismax]);
ha2 = subplot(2,1,2); plot(Frequency, Phase);
title('Phase / Frequency')
xlabel('frequency');
ylabel('Phase');
set(ha2,'XLim',[xaxismin xaxismax]);
end
 
 
Private Nachricht senden Benutzer-Profile anzeigen
 
el07aab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 23.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2010, 15:09     Titel:
  Antworten mit Zitat      
Ok, wenn ich jetzt deinen Code kopiere und einfüge dann bekomme ich folgende Fehlermeldung:

Code:

??? Error using ==> set
Bad value for axes property: 'XLim'
Value must be numeric.

Error in ==> Hornmeas at 38
set(ha1,'XLim',[xaxismin xaxismax]);
 


Ich denke ich bin auf dem richtigen Weg, aber trotzdem ist mir einiges nicht klar, zB wieso man nachdem man eine plot funktion ausfuehrt, die Dimensionen der Achsen noch ändern kann ?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.08.2010, 15:56     Titel:
  Antworten mit Zitat      
Hallo


xaxismin und xaxismax sind Strings und müssen vorher konvertiert werden.
einfach nach INPUT -Funktion folgenden Code einfügen
Code:

xaxismin = str2double(xaxismin)
xaxismax = str2double(xaxismax)
 


Wenn du Plot gezeichnet hast, visuell siehst du zwar Linie, intern aber werden die Werte immer noch als Zahlenwerte beibehalten(Vektorgraphik). Deswegen kann man nachhinein Achsen-Ausschnitt verändern, ist doch fast wie scrollen oder zoomen -- Plot- Werte verändern sich dadurch nicht
Private Nachricht senden Benutzer-Profile anzeigen
 
el07aab
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 23.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2010, 17:22     Titel:
  Antworten mit Zitat      
super, funktioniert !!!!
vielen Dank
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.