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

Suchen eines Punktes in einem bestimmten Intervall

 

lab_manager
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 10.08.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 25.04.2012, 13:45     Titel: Suchen eines Punktes in einem bestimmten Intervall
  Antworten mit Zitat      
Hallo Zusammen,

ich versuche einen Punkt in einem bestimmten Intervall einer Messreihe zu suchen, leider klappt das nicht so wie ich will.
Code:


interval = [0, tmax];

%v ist die komplette Messreihe, die ich mit dem intervall einschrenken will

v = [t a] %Amplitude = a und Zeit = t

[I zeile] = min(abs(v(:,1)-t_10)); %Suchfunktion
gesuchter_wert1 = v(zeile,1);
gesuchter_t1 = v(zeile,1);
gesuchter_a1 = v(zeile,2);

 


Vielen Dank, im Vorraus!

MFG

Lab_Manager
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.04.2012, 14:26     Titel: Re: Suchen eines Punktes in einem bestimmten Intervall
  Antworten mit Zitat      
Hallo lab_manager,

Wenn Dein Programm nicht genau das macht, was Du möchtest, wäre es hilfreich, wenn Du erklärst, was Du möchtest. Andernfalls kann man kaum einen Verbesserungsvorschlag machen.

Sind t und a in Deinem Code Spalten-Vektoren? Solche Details sind ebenfalls wichtig, um zu verstehen, was das Programm leistet. Du definierst zwar "interval", benutzt es später aber nicht. "t_10" dagegen wird im gezeigten Code nicht definiert.

Bitte poste also noch die nötigen Details.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 10.08.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 25.04.2012, 14:33     Titel:
  Antworten mit Zitat      
oh tschuldigung! Smile


Code:


function Risetime()


v = load('D:\MATLAB\Beispiele\Funktionen\Messkurve einer Entladung\C1MP1000000.dat');
t = v(:,1); %Auslesen der Zeitachse (X-Achse)
a = v(:,2); %Auslesen der Amplitude (Y-Achse)

ai = a/0.1;
vi = [t ai];

Imax = max(ai); % Imax oder Ip
[I zeile] = min(abs(vi(:,2)- Imax)); % Die Zeile ermitteln

% Aufzeichnen der Zeit aus der Zeile, dies ist zugleich unser Intervall
% Endwert. Der Intervall wird auf der Zeitachse festgelegt. Innerhalb
% dieses Intervals muss die Suche erfolgen.
tmax = vi(zeile,1)
I_10 = 0.1 * Imax
I_90 = 0.9 * Imax



h = plot(t,ai);
hold all; % Mit diesem Befehl wird der erste plot festgehalten
axis([-0.5e-7 1.5e-7 0 7]);
%Suchen der Messwerte in einer Messreihe

[I_10 zeile_10] = min(abs(vi(:,2)- I_10(:,2)))
gesuchter_wert = vi(zeile_10,2)
gesuchter_t_10 = vi(zeile_10,1)
gesuchter_a_10 = vi(zeile_10,2)
plot(gesuchter_t_10,gesuchter_a_10,'m*','markersize',8)
 
 
[I_90 zeile_90] = min(abs(vi(:,2)-I_90(:,2)))
gesuchter_wert1 = vi(zeile_90,2)
gesuchter_t_90 = vi(zeile_90,1)
gesuchter_a_90 = vi(zeile_90,2)
plot(gesuchter_t_90,gesuchter_a_90,'c*','markersize',8)

interval = [0, tmax]

 


das ist mein kompletter Code, ich versuche die Punkte I_10 und I_90 zu finden, aber in einem bestimmten Intervall.
Es handelt sich bei v um einen Vektor. t und a sind spalten Vektoren!
Private Nachricht senden Benutzer-Profile anzeigen
 
lab_manager
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 10.08.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 26.04.2012, 14:44     Titel:
  Antworten mit Zitat      
Habe das ganze jetzt etwas anders aufgezogen:

Code:

function Risetime()

v = load('D:\MATLAB\Beispiele\Funktionen\Messkurve einer Entladung\C1MP1000000.dat');
t = v(:,1); %Auslesen der Zeitachse (X-Achse)
a = v(:,2); %Auslesen der Amplitude (Y-Achse)

ai = a/0.1;
vi = [t ai];

h = plot(t,ai);
hold all; % Mit diesem Befehl wird der erste plot festgehalten
axis([-0.5e-7 1.5e-7 0 7]);

% Suche der oberen Intervall Grenze

Imax = max(ai); % Imax oder Ip
[y zeile] = min(abs(ai - Imax)); % Die Zeile ermitteln
tmax = vi(zeile,1);
oL = [tmax, Imax];
I_10 = 0.1 * Imax;
I_90 = 0.9 * Imax;

% Suche der unteren Grenze

tmin = 0;
[x zeile] = min(abs(t-tmin));
Imin = vi(zeile,2);
uL = [x, Imin];

%Suchen der Messwerte in einer Messreihe in einem bestimmten Intervall

for i = 1
    ans = min(abs(vi(i,2)-I_10))
    ans = find(uL < vi & vi < oL)
end
 


Bekomme aber einen Error, dass die matrix Dimension übereinstimmen muss?

Code:
??? Error using ==> lt
Matrix dimensions must agree.

Error in ==> Risetime at 41
    ans = find(uL < vi & vi < oL)
 


Kann mir jemand helfen!

Danke im Vorraus!
Private Nachricht senden Benutzer-Profile anzeigen
 
lab_manager
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 10.08.11
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 03.05.2012, 12:23     Titel:
  Antworten mit Zitat      
Hallo Leute,

habe das Problem auf eine etwas andere Art gelöst. Smile

Hier ein kleiner Teil:

Code:


%Verkleinerung des Wertepaares

filt=vi(vi(:,1) < tmax & vi(:,1) > -0.1e-8,:); %Daten filtern



[I zeile] = min(abs(filt(:,2)-I_10));
gesuchter_wert1 = filt(zeile,1);
gesuchter_t1 = filt(zeile,1)
gesuchter_a1 = filt(zeile,2)
plot(gesuchter_t1,gesuchter_a1,'c*','markersize',8);

[I zeile] = min(abs(filt(:,2)-I_90));
gesuchter_wert2 = filt(zeile,1);
gesuchter_t2 = filt(zeile,1)
gesuchter_a2 = filt(zeile,2)
plot(gesuchter_t2,gesuchter_a2,'c*','markersize',8);

%Bestimmung der Risetime: t_A = t_90 - t_10

t_A = abs(gesuchter_t2 + gesuchter_t1)


Durch die verkleinerung des Vektors vi habe ich die Möglichkeit die suche auf diesen kleinen Wertebereich zu beschränken
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.