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

Schleifenproblem Indizierung

 

Julia1991
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 12:18     Titel: Schleifenproblem Indizierung
  Antworten mit Zitat      
Hallo liebe goMATLAB-Gemeinde,

Heute habe ich ein Problem mit einer Schleife.
Ich habe als Inputdatei folgendes:

Code:

Input =

   569     2
    18     1
    19     3


und benutze weiterhin folgenden Code:

Code:
Size = size(Input)

for x = 1:Size(1)
InputC(x) = [Input(1,x),Input(2,x)];   % Input aus Datei
end


Was ich am Ende haben wollte ist die Zuordnung a la:

InputC(1) = [569,2]
InputC(2) = [18,1]
InputC(3) = [19,3]

Doch ich bekomme als Fehlermeldung:

Code:
Error in HauptPRG (line 113)
InputC(x) = [Input(1,x),Input(2,x)];   % Input aus Datei


Kann mir da bitte jemand auf die Sprünge helfen? ;(

Liebe Grüße,
Julia!
Private Nachricht senden Benutzer-Profile anzeigen


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 07.10.2013, 12:39     Titel:
  Antworten mit Zitat      
Hallo julia,
bitte beim nächsten mal die vollständige Fehlermeldung posten. Hab grad kein matlab zum testen, aber ich vermute mal so:

Code:
InputC(x,:)=...


Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 07.10.2013, 12:54     Titel:
  Antworten mit Zitat      
Hallo Julia,

ist das wirklich die komplette Fehlermeldung? Normalerweiße steht da noch dabei, was die Ursache ist und nicht nur die Zeile, wo der Fehler auftritt.

Außerdem solltest du versuchen Variablen keine Funktionsnamen zu geben (input, size, max...), da du sonst später die Funktion nicht mehr nutzen kannst.

Code:


das würde bei dir eine Fehlermeldung produzieren Wink

Grüße
Chris
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: 07.10.2013, 13:29     Titel: Re: Schleifenproblem Indizierung
  Antworten mit Zitat      
Hallo Julia1991,

Es ist nicht klar, wie genau das File aussieht. Gehört "Input = " mit dazu?
"Size" und "Input" sind ungünstige Namen für Variablen, weil es sie in Kleinschreibung auch als Matlab-Befehle gibt.

Die Fehlermeldung ist nicht komplett. Es fehlt die Beschreibung des Fehlers. Wenn ich die mal errate, wäre dies vielleicht eine Lösung:
Code:
Size1 = size(Input, 1)
InputC = cell(1, Size1);
for x = 1:Size1
  InputC{x} = Input(1:2,x);   % Input aus Datei
end

Die geschweiften Klöammern sind hier also wichtig.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 15:25     Titel:
  Antworten mit Zitat      
Tut mir Leid! Ich habe nicht alles kopiert. Embarassed
Hier ist der komplette Fehlerbericht:

Code:
???  In an assignment  A(I) = B, the number of elements in B and
 I must be the same.

Error in ==> HauptPRG at 113
InputC(ii) = [Input(1,ii),Input(2,ii)];   % Input aus Datei
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia1991
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 15:29     Titel: Re: Schleifenproblem Indizierung
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Julia1991,

Es ist nicht klar, wie genau das File aussieht. Gehört "Input = " mit dazu?
"Size" und "Input" sind ungünstige Namen für Variablen, weil es sie in Kleinschreibung auch als Matlab-Befehle gibt.

Die Fehlermeldung ist nicht komplett. Es fehlt die Beschreibung des Fehlers. Wenn ich die mal errate, wäre dies vielleicht eine Lösung:
Code:
Size1 = size(Input, 1)
InputC = cell(1, Size1);
for x = 1:Size1
  InputC{x} = Input(1:2,x);   % Input aus Datei
end

Die geschweiften Klöammern sind hier also wichtig.

Gruß, Jan


Oh okay, dann werde ich die Variablennamen ändern. Danke für den Tipp!
"Input =" ist eine Matrix in der Zahlenpaare aus einer Txt Datei abgespeichert sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia1991
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 15:33     Titel:
  Antworten mit Zitat      
Um es vielleicht deutlicher zu sagen was ich am Ende haben will:

Ich möchte am Ende in dem Beispielfall 3 verschiedene Variablen/Zeilenvektoren haben:

InputC(1) = [569,2]
InputC(2) = [18,1]
InputC(3) = [19,3]

<- Dies sollen keine EInträge für eine Matrix sein, sondern eigenständige Zeilenvektoren. Ich hoffe es ist verständlich genug... Embarassed
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: 07.10.2013, 16:13     Titel:
  Antworten mit Zitat      
Hallo Julia1991,

Die Fehlermeldung besagt folgendes:
1. InputC(1) ist ein Skalar, enthält also ein Element.
2. [569,2] enthält zwei Elemente.
3. Also kann man nicht das eine dem anderen zuweisen.

Entweder InputC wird auch eine Matrix:
Code:
InputC(1, :) = [569,2]

Oder es wird ein Cell Array:
Code:
InputC{1} = [569,2]

Siehe dazu auch "doc cell".

Ich hatte dies ja bereits als Code gepostet. hast Du es mal ausprobiert?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 16:52     Titel:
  Antworten mit Zitat      
Hallo Jan!

Ja ich habe den Code ausprobiert und folgendes kommt als Fehlermeldung:

Code:
??? Index exceeds matrix dimensions.

Error in ==> HauptPRG_AblaufZustandsraum_V2_130104 at 115
  EingangC{x} = Eingang(1:2,x);   % Input aus Datei


PS: Ich habe Input jeweils mit Eingang getauscht, wie ihr es mir vorgeschlagen habt. Smile

Mein aktueller Code sieht wie folgt aus:

Code:
fin = fopen('KnotenInNr.txt','r');
Eingang = (fscanf(fin,'%f',[2,inf]))';
cd ..
%Size = size(Eingang)

Size1 = size(Eingang, 1)
EingangC = cell(1, Size1);
for x = 1:Size1
  EingangC{x} = Eingang(1:2,x);   % Input aus Datei
end


Wobei Eingang wie folgt aussieht:

Code:
>> Eingang

Eingang =

  569     2
    18     1
    19     3
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 20:19     Titel:
  Antworten mit Zitat      
Hallo Julia1991,

Du hast Zeilen und Spalten verwechselt:
Code:
Size1 = size(Eingang, 1)
EingangC = cell(1, Size1);
for x = 1:Size1
  EingangC{x} = Eingang(x,:);   % Input aus Datei
end


oder einfach
Code:
EingangC = mat2cell(Eingang,ones(Size1,1),2);


Die wichtigere Frage ist allerdings, warum Du ein Cell-Array einer Matrix aus Zeilenvektoren vorziehst.

Grüße,
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
Julia1991
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 21:45     Titel:
  Antworten mit Zitat      
Oh cooool, Sirius danke für den Code!
Ich bedanke mich bei allen die mir geholfen haben recht herzlich! Ihr seid die besten im Helfen einer hilflosen Studentin! hihi
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.