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

Hilfe beim Erstellen des GUIs von "bestehendem" Pr

 

physiker

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2009, 17:17     Titel: Hilfe beim Erstellen des GUIs von "bestehendem" Pr
  Antworten mit Zitat      
hallo

ich arbeite da grad an einem für mich doch recht großem programm mit vielen hürden.
ich muss dazu sagen, dass mein wissenstands zum erstellen eines GUIs eher gering ist, aber ich habe mich mal versucht und bin soweit gekommen:

Code:
clear all

global dat;
global data;
global kb;
global el;
global a;
global b;
global dy;
global potplind;
global para;
global potflind;
global coeff;
global coeff2;
global fitbx;
global fitby;
global xy
global k

dat=uigetfile({'*.ken;*.dat'}, 'Messdaten laden','MultiSelect','off');
data=load(num2str(dat));
clf
%Konstanten
kb=1.380658*10^(-23);
el=1.60217733*10^(-19);

fig=figure('NumberTitle','off','Name', 'Plasmaparameter','Resize','off','Units','normalized', 'menubar', 'none');

subplot(2,2,1)
plot(data(:,1),data(:,2))
xlabel('U [V]'), ylabel('I [A]'), grid on, axis auto, hold on

i=1;
    while mean(data(1:i,2))>mean(data(1:20,2))-mean(data(1:20,2))*0.1
        i=i+1;
    end
   
   fit(data(1:i,1),data(1:i,2), 'poly1');
   coeff=polyfit(data(1:i,1),data(1:i,2),1);
   a=coeff(1,1);
   b=coeff(1,2);
   plot(data(:,1),a*data(:,1)+b)  
   
   dy=der(smooth(data(:,2),floor(length(data(:,2))/50)),data(:,1),1);
   
   subplot(2,2,2)
   plot(data(:,1),dy,'r')
   xlabel('U [V]'), ylabel('dI/dU [A/V]'), grid on, axis auto, hold on
  datacursormode on
   
  xy=ginput(1);
 

   if size(xy)==0
       
   potplind=find(dy==min(dy));
   para.potpl=data(potplind,1);
   
   
   else
       para.potpl=xy(1);
       k=1;
       while (data(k+1,1)>=para.potpl) && (data(k,1)<=para.potpl)
           k=k+1;
       end
       k
       pause
   end
   
   potflind=find(abs(data(:,2))==min(abs(data(:,2))));
   para.potfl=data(potflind,1);
   para.isati=a*para.potpl+b;
   para.isatg=data(potplind,2);
   para.isate=para.isatg-para.isati;
   
   fitbx=data(potflind:potplind,1)-para.potpl;
   fitby=data(potflind:potplind,2)-para.isati;
   
   coeff2=polyfit(fitbx, real(log(fitby)),1);
   
   para.Te=1/coeff2(1);
   para.r=-para.isate/para.isati;
   para.mu=log(para.r);
   para
   


hier wird als einzige zusätzliche funktion benutzt:

Code:

function dy=der(y,x,n);
 
% dy = der(y,x,n)
%
% DER calculates the n'th difference of y :  dy=y/x
% using a third order scheme for n=1, fourth order for n=2 and
% fifth order for n=3
%       y       matrix to be derived (data sets are columns)
%   x   x-axis for y, has to be equidistant
%       n       derivative order n=1,2 or 3 (default is 1)
%       dy       derived matrix
 
%                                                       ThDdW  5/89
%changed by Christiane Schroeder 25.4.2003: included x, so that also
%for dx~=1 derivative is correctly calculated      
 
[m,n2]=size(y);
if m==1, y=y.'; m=n2; n2=1; end
if nargin<2, x=1:m; end
if nargin<3, n=1; end                   % default is first derivative

dx=x(2)-x(1);


if n==1,
        edge = 3*y([1,m],:) - 4*y([2,m-1],:) + y([3,m-2],:);    % y' at edge
        dy = [-edge(1,:);  y(3:m,:)-y(1:m-2,:);  edge(2,:)]/2;
   dy=dy/dx;
elseif n==2,
        edge = 2*y([1,m],:) - 5*y([2,m-1],:) + 4*y([3,m-2],:) ...
                            - y([4,m-3],:);                     % y'' at edge
        dy = [-edge(1,:);  y(3:m,:)-2*y(2:m-1,:)+y(1:m-2,:);  edge(2,:)];
   dy=dy./(dx^2);
elseif n==3,
        edge = (5*y([1:2,m-1:m],:)      - 18*y([2:3,m-2:m-1],:) ...
             + 24*y([3:4,m-3:m-2],:)    - 14*y([4:5,m-4:m-3],:) ...
             +  3*y([5:6,m-5:m-4],:));
        dy = [y(5:m,:)-2*y(4:m-1,:)+2*y(2:m-3,:)-y(1:m-4,:)];
        dy = [-edge(1:2,:); dy; edge(3:4,:)]/2;
   dy=dy./(dx^3);
end

 


so und nun kommen meine fragen Smile

1) zunächst habe ich noch ein kleines problem im programm. ich habe ja 2 plots. im rechten möchte ich egal zu welcher zeit einen datenpunkt extrahieren (das wäre dann potpl) und mit diesem dann weiter rechnen. mein problem ist zunächst, dass dieser ausgesuchte punkt auch wirklich punkt der menge ist. (das habe ich in der if schleife versucht, aber das wird nichts!) es muss der punkt im plot sein, der vorher geplottet ist, aber das krieg ich irgendwie nicht hin. und wie kann ich es anstellen, dass ich diesen punkt egal zu welcher zeit aktualisieren kann (gerne per knopfdruck) und die berechnung erneut alle werte dementsprechend anpasst? außerdem sollte sich der cursor nur auf den datenbereich beschränken...wie so eine sonde...ich brauche hier auch nur den x wert (abzisse)

2) zum gui

ich möchte gerne eine zusammenhängende oberfläche haben, auf der die beiden plots sind und die berechneten werte para in jeweils verschiedenen Felder auber, schick angezeigt werden und gegebenfalls aktualisiert werden, wenn man siehe oben den einen wert ändert. dann wollte ich noch sowas einbauen, dass man eine liste mit der directory hat, wo man dann seine messwerte aussuchen kann. die benutzte variante praktisch im programm, aber auf der oberfläche angewendet. geht sowas?


hui das wird noch viel arbeit. ich hoffe, dass mir einer vllt helfen kann. ich freu mich und bedanke mich im voraus!

p.s.: übrigens das prog oben, hab ich fast alleine durch lesen von beiträgen aus diesem forum zusammenbauen können, also weiter so!!!


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 12.09.2009, 18:32     Titel:
  Antworten mit Zitat      
Moin,

kannst du bitte das Programm als Files posten?

Ansonsten:
zu 1.: Was mir spontan einfällt ist die Funktion
Code:
mit dieser bestimmst du per Klick den Punkt. Da es nicht gegeben ist, dass du den richtigen Wert triffst, müsstest du eine Berechnung anschließen, die dir den nächstgelegenen Punkt bestimmt und diesen dann für deine Berechnungen verwendet.

zu 2.: Ich habe deinen Code, mangels Files (ja, ich bin zu Faul mir eigene zu erstellen Wink), nicht ausgeführt. Aber wenn du dein GUI mit GUIDE erstellst, dann bist du auf dem richtigen Weg, du musst nur deine Berechnungen an den richtigen Stellen einbauen. Oder du erstellst dir das GUI manuell, was allerdings zu Fummelarbeit ausarten kann, je nach dem...
Die letzte Frage zu 2. habe ich nicht verstanden.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
physiker
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2009, 11:03     Titel:
  Antworten mit Zitat      
hallo steve

also ginput habe ich schon benutzt und dann per schleife prüfen lassen, welcher genaue wert dann als nächstes dazu passt aber irgendwie funktioniert das nicht...warum auch immer....kannst du dort vllt nochmal in die schleife schauen?

also bezogen auf dieser sache, habe ich bereits ein fertiges gui gesehen, wo man nur mit der maus in diesem einen bestimmten diagramm sich die werte geben lassen konnte. wie kann man sowas realisieren?

zu 2) ich würde gerne sone art liste im gui reinpacken mit der ich dann durch die directories switchen kann und dann die datei mit den messwerten aussuchen kann, die dann geladen werden und berechnet werden.

gruß

der.m
 Beschreibung:

Download
 Dateiname:  der.m
 Dateigröße:  1.42 KB
 Heruntergeladen:  428 mal
guitest.m
 Beschreibung:
Hauptprogramm

Download
 Dateiname:  guitest.m
 Dateigröße:  1.75 KB
 Heruntergeladen:  453 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 13.09.2009, 12:01     Titel:
  Antworten mit Zitat      
Moin,

da fehlt noch ein Beispiel-Datenfile...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
physiker
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2009, 12:16     Titel:
  Antworten mit Zitat      
sry das hab ich vergessen. ändere bitte die dateiendun zu *.ken, dann kann man das öffnen! (man kann hier keine *.ken dateien hochladen)

daten.txt
 Beschreibung:

Download
 Dateiname:  daten.txt
 Dateigröße:  18.66 KB
 Heruntergeladen:  428 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
physiker
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2009, 08:11     Titel:
  Antworten mit Zitat      
also das problem mit der schleife habe ich beheben können.!

so stelle ich mir das gui vor, aber mir fehlt das wissen um den code einzuspeisen. mit der liste habe listbox directory reader gefunden (schon fertig gebaut)

kann mir jmd helfen?

gui1.fig
 Beschreibung:

Download
 Dateiname:  gui1.fig
 Dateigröße:  5.76 KB
 Heruntergeladen:  478 mal
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 - 2024 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.