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

Fehlermeldung : Index exceeds matrix dimensions.

 

Lala888
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 08.09.2017, 10:12     Titel: Fehlermeldung : Index exceeds matrix dimensions.
  Antworten mit Zitat      
Hallo Leute,

ich bräuchte mal wieder eure Hilfe.

Ich habe zwei Cell Array in denen in jeder Zeile jeweils eine Matrix vorhanden ist.
Diese Matritzen haben viele Zeilen und zwei Spalten. In der ersten Spalte sind aufsteigene Zahlen.
Nun möchte ich alle Matritzen zwischen zwei Zahlenwerten kürzen.

Das wäre soweit mein Code der auch meistens funktioniert. Nur bei bestimmten Zahlenwerten, wie num1 oder num2 = 1000, erscheint die oben genannte Fehlermeldung.

Code:

C1=cell(5,1);
C2=cell(5,1);

for ii=1:5
   
    pos1=find(c1{ii,1}==num1);
    pos2=find(c1{ii,1}==num2);
    C1{ii,1}=c1{ii,1}(pos1:pos2,:);
   
    pos1=find(c2{ii,1}==num1);
    pos2=find(c2{ii,1}==num2);
    C2{ii,1}=c2{ii,1}(pos1:pos2,:);
end


Anbei sind noch die Arrays.

Ich hoffe Ihr Ihr wisst was ich da falsch gemacht habe.

Grüße
Lala

c.mat
 Beschreibung:

Download
 Dateiname:  c.mat
 Dateigröße:  1.24 MB
 Heruntergeladen:  317 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.09.2017, 13:17     Titel:
  Antworten mit Zitat      
Hallo,

du müsstest noch mehr dazu sagen, was der Code genau machen soll.
Im Moment der Fehlermeldung sind pos1 und pos2 Vektoren. Was soll "pos1:pos2" denn an dieser Stelle sein?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 08.09.2017, 14:12     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Antwort.

pos1 und pos2 sollen die Positionen der Matritzen sein von den Werten wie z.B. 900 und 1000. C1 und C2 soll dann nurnoch die Werte enthalten die zwischen pos1 und pos2 sind.
Das funktioniert auch meistens, aber bei ein paar Werten wie z.B. 1000 nicht.

Ich hoffe ich hab das einigermaßen verständlich erklärt.

Lala
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.09.2017, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

das kannst du direkter haben:
Code:
C1{ii,1}=c1{ii,1}(c1{ii,1}(:,1) >= num1 & c1{ii,1}(:,1) <= num2,:);


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 67
Anmeldedatum: 05.09.16
Wohnort: München
Version: ---
     Beitrag Verfasst am: 08.09.2017, 15:06     Titel:
  Antworten mit Zitat      
Das hat geklappt. danke darüf.
Weisst du denn auch wo bei mir der Fehler lag?

Hast du denn auch noch so einen einfachen und schnellen Code um meine Matrizen in der ersten Spalte zu interpolieren und in der zweiten Spalte aufzufüllen falls num2 größer ist als der höchste Wert der ersten Spalte?

Meiner ist warschienlich genauso umständlich und lang wie der Vorige.

Lala
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ein Problem war auf jeden Fall wie gesagt, dass pos1 und pos2 Vektoren sein können. Da ergibt pos1:pos2 für mich keinen Sinn.

Die zweite Frage klingt, als sollte sich das mit der Option extrap von interp1 lösen lassen.

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.