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

Matrix Dimensionsfehler bei for-Schleife

 

New_Matlab_newbie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2015, 16:13     Titel: Matrix Dimensionsfehler bei for-Schleife
  Antworten mit Zitat      
Hallo,

ich habe ein Problem. Und zwar bekomme ich an der Stelle wo ich die max Werte für minv und minp ([minv(y,x), minp(y,x)].....) suche die Fehlermeldung "Index exceeds matrix dimensions.". Ich verstehe schon was er mir damit sagt, aber ich bekomme es nich hin das es funktioniert.


Code:

 x_pos = 1;
 y_pos = 1;
 
maxp = zeros(700,1000);
maxv = zeros(700,1000);
minp = zeros(700,1000);
minv= zeros(700,1000);

 for y = y_pos:700      
      spos_y = y;
      for x = x_pos:1000          
     spos_x = x;
         scandata = FILE('r_point', handle_h, spos_y, spos_x);            
         [maxv(y,x),maxp(y,x)] = max(scandata);
         timerange_min = maxp(y,x)+60;
         timerange_max = maxp(y,x)+600;
         Ascan_data = -1*Ascan_data;
        [minv(y,x), minp(y,x)]=max(scandata(timerange_min:timerange_max));  
         end;
     end;
 


Vielen Dank im Voraus für Hilfe und Hinweise!

Gruss,
new_newbie Smile


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.04.2015, 17:07     Titel:
  Antworten mit Zitat      
Zitat:
Ich verstehe schon was er mir damit sagt, aber ich bekomme es nich hin das es funktioniert.

ohne zu wissen was da rauskommen soll ist es schwer zu helfen.
in maxp ist der index des maximums von scandata
und in der zeile
Code:
[minv(y,x), minp(y,x)]=max(scandata(timerange_min:timerange_max));  

gehst du dann 600 elemente weiter. woher willst du wissen das das maximum nicht zu den letzten 600 elementen gehört?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
New_Matlab_newbie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2015, 18:13     Titel:
  Antworten mit Zitat      
Danke für die Antwort soweit erstmal.

In scandata schreibt er für jeden importierten x-y Wert jeweils eine zeitliche Funktion rein. Immer eine 1x1000 Matrix.
Jede Funktion hat zwei Wellenpakete an Zeitlich unterschiedlichen Stellen, der Abstand der beiden Pakete zu einander variiert ein wenig. Ansonsten hat die Funktion nur ein wenig Gerausche um die Nulllage rum (Spannungswerte). wenn man nur den Teil oberhalb der nulllage betrachtet, sieht es im Grunde aus wie eine Ebene mit zwei Bergen. Der zweite (zeitlich spätere) "Berg" ist immer kleiner als der erste (Spannung geringer). Die beiden Bergspitzen gilt es jetzt zu finden. Allerdings beim zweiten Berg das Minima, deshalb die invertierung in der Schleife, und das halt für jede x-y position. In maxp schreibt er mir die Position des ersten maxima, in maxv den zugehörigen Spannungswert. Dann wird invertiert, und mit dem offset von 60 nach dem ersten Maxima wird dann begonnen nach dem zweiten Maxima zu suchen. Der Bereich bis 600 ist nur dazu die sache nach hinten zu Begränzen. Der Gesmte Zeitberich liegt bei 1000 für jede Funktion, das sind Rasterpnkte die in Zeit umgerechnet werden können, aber hier nicht von interesse ist. für maxp bekomme ich also einen Rasterpunkt für das erste maxima, dann invertiere ich und gebe zu diesem Wert 60 Rasterpunkte dazu und such ab da nach dem nun Maximum, da invertiert.
Hoffe das hilft weiter Smile
Danke soweit!
 
New_Matlab_newbie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2015, 18:26     Titel:
  Antworten mit Zitat      
Vielleicht noch als ergänzung.

Das Ofset resultiert daraus, das jedes Wellenpaket ja aus mehreren ausschlägen beteht. Als beispiel, Wellenpaket 1 hat 5 Maxima und 5 minima, das größte Maxima will ich wissen. Vom zweiten Wellenpaket das gleiche, nur das es dort das Minima ist, deshalb invertierung das max verwendet werden kann (muss nicht, weiss ich Smile) Das Problem ist, das größte Maxima des zweiten Paketes (welches ich wissen will) ist kleiner als zum Beispiel das 5 Maxima des ersten Wellenpaketes. Daher das Ofset, das Wellenpaket eins nicht nach maximas durchsucht wird. Der Wert ist ausreichend, geprüft anhand anderer auswertungen.

Danke Wink
 
New_Matlab_newbie

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2015, 18:30     Titel:
  Antworten mit Zitat      
davon ausgegangen das ich das 3 maxima im ersten Paket wissen will, somit folgt.

Code:
Maxima 3 Paket 1 > Maxima 5 Paket 1  > Maxima 3 Paket 2
             |                            |                              |
  will ich wissen               nicht wissen              will ich wissen
 
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.