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

Problem bei Finden eines Minimalwertes

 

HMK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2014, 16:40     Titel: Problem bei Finden eines Minimalwertes
  Antworten mit Zitat      
Hallo,

ich habe ein Problem beim Bestimmen der Minimalwerte aus n Messwerten (hier "Fr") und deren Ausgabe in Excel.

Code:
zeilen=numel(s);
v((zeilen+1):end)=[];
Funk=[s,Fr,v];
s11=(a-0.25);
s12=(a+0.25);
s21=(b-0.25);
s22=(b+0.25);
s31=(c-0.25);
s32=(c+0.25);
s41=(d-0.25);
s42=(d+0.25);
s1=find((s11<s(:,1))&(s(:,1)<s12));
s2=find((s21<s(:,1))&(s(:,1)<s22));
s3=find((s31<s(:,1))&(s(:,1)<s32));
s4=find((s41<s(:,1))&(s(:,1)<s42));
Fr1=min(Funk(s1,2));
Fr2=min(Funk(s2,2));
Fr3=min(Funk(s3,2));
Fr4=min(Funk(s4,2));
woFr1=find(Fr1==Funk(:,2));
woFr2=find(Fr2==Funk(:,2));
woFr3=find(Fr3==Funk(:,2));
woFr4=find(Fr4==Funk(:,2));
Punkt1=Funk(woFr1,:);
Punkt2=Funk(woFr2,:);
Punkt3=Funk(woFr3,:);
Punkt4=Funk(woFr4,:);
xlswrite('PEN Stw.xlsx',Punkt1,1,l);
xlswrite('PEN Stw.xlsx',Punkt2,2,l);
xlswrite('PEN Stw.xlsx',Punkt3,3,l);
xlswrite('PEN Stw.xlsx',Punkt4,4,l);


Beim 1. Durchlauf gestern hat das Programm funktioniert, heute kommt in Zeile 16 bei "Fr1" die Fehlermeldung:

Code:
Subscript indices must either be real positive integers or logicals.


Bei den Daten die ich gestern durchgearbeitet habe hat es vorhin noch funktioniert, mittlerweile kommt beim Durchlaufen die Fehlermeldung von oben.

Kann man das durch eine andere Funktion umgehen oder muss ich etwas in der Struktur der Matrizen ändern?


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.11.2014, 16:51     Titel:
  Antworten mit Zitat      
Hallo,

nutze doch den Debugger, um das Problem aufzuspüren.
Alternativ bitte Beispieldaten zur Verfügung stellen, damit man das Problem nachvollziehen kann.

Grüße,
Harald

P.S.: Dass genau dasselbe Programm mit genau denselben Daten einmal funktioniert und einmal nicht, ist sehr unwahrscheinlich, außer wenn in irgendeiner Form Zufallszahlen beteiligt sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
HMK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2014, 17:53     Titel:
  Antworten mit Zitat      
Habe mal eine Beispieldatei angehängt.

"bsp" lief komplett durch, "bsp1" nicht.

Wenn ich "bsp" heute durchlaufen lasse kommt die Meldung aus meinem 1. Post.

Ich prüfe nochmal durch, ob ich gestern noch etwas im Workspace hatte, das diesen Fehler "unterdrückt" hat.

bsp.zip
 Beschreibung:
enthält bsp.mat und bsp1.mat

Download
 Dateiname:  bsp.zip
 Dateigröße:  230.04 KB
 Heruntergeladen:  293 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.11.2014, 18:25     Titel:
  Antworten mit Zitat      
Hallo,

du hast in deinem Workspace eine Variable min. Diese Variable überlagert die Funktion min, woraus die Fehlermeldung resultiert:
Code:


Ich würde dazu raten, den Workspace besser "aufzuräumen".

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2014, 18:46     Titel:
  Antworten mit Zitat      
Hallo Harald,

Vielen Dank für die Hilfe, mit "clear min" hat es funktioniert.
Habe es sicherheitshalber in das Skript eingefügt, kommt wahrscheinlich auch noch in anderen Dateien vor...

Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.11.2014, 18:53     Titel:
  Antworten mit Zitat      
Hallo,

dasselbe gilt natürlich auch für andere Funktionen. Insofern würde ich vor dem Ausführen eines Skriptes
Code:

ausführen.

Übrigens vermute ich, dass sich das ganze geschickter anstellen lässt, z.B. indem man find mit zusätzlichem Argument 1 aufruft oder sich das zweite Rückgabeargument von min zurückholt.

Grüße,
Harald
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.