Forum: PC Hard- und Software Probleme mit matlab, Attempted to access zahl(1); index out of bounds because numel(zahl)=0.


von sdggfd j. (sdggfd_j)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich bin neu in diesem Forum, nach lange Recherchen bin auf euch 
gelandet.

Ich hoffe ihr koennt mir helfen:

Ich habe das folgende Program zu loesen und versuche es fuer verchieden 
U zu variieren wie ihr in das Programm code sehen werdet, nur bekomme 
ich staendig folgende Fehler

Attempted to access zahl(1); index out of bounds because numel(zahl)=0.

Verstehe aber nicht woher es kommt, da die Differentialgleichung in der 
Funktion nonlinearrest stimmt.


Bin verzweifelt.

Danke euch im Voraus

Lara

: Verschoben durch Moderator
von sdggfd j. (sdggfd_j)


Angehängte Dateien:

Lesenswert?

Sorry, hatte die zweite Datei vergessen.

Lara

von J.-u. G. (juwe)


Lesenswert?

Wenn Du schon globale Variablen verwenden möchtest, musst Du die auch 
alle in sämtlichen Funktionen, die sie verwenden deklarieren. In Deinem 
Fall ist "zahl" nicht in der Funktion "testDissjwibbeler_k_mems_var_Uac" 
als global deklariert.

BTW: Deine Frage ist im Unterforum "Mechanik, Gehäuse, Werkzeug" 
übrigens falsch aufgehoben.

von sdggfd j. (sdggfd_j)



Lesenswert?

Sorry, wusste nur nicht wohin damit, habe leider nicht allzuviel im 
Forum geschaut; denn bin zu froh gewesen ein Matlab-Forum zu finden.

danke juwe fuer den Hinweis ich habe es selbst mitlerweile bemerkt, 
jetzt taucht aber ein anderes Problem auf und zwar:

1) ich habe 2 Schleifen in meine Hauptprogramm , die innere sollte 
normalerweise 7 mal durchlaufen und die zweite 3 mal=Anzahl der 
Parameter: aber es laueft fuer nur 1 parameter sogar 2 bis 3 mal. ich 
verstehe aber nicht warum, wie kann ich mein Programmcode debbugen so 
dass ich es sehe.


2) wie kann ich es eleganterweise in mein Programm(fuer unterschiedliche 
U) mehrere Plots mit unterschiedliche Farben bekommen

Ich lade jetzt die neue Version

Danke fuer die Hilfe

von Kevin K. (nemon) Benutzerseite


Lesenswert?

mehrere plots:

figure(1)
clf;
hold on;
plot(x_werte(1),y_werte(1),'k';
plot(x_werte(2),y_werte(2),'b';
plot(x_werte(3),y_werte(3),'g';
plot(x_werte(4),y_werte(4),'c';

Zu Grafiken: das Buch Graphics and GUIs with MATLAB 
(http://www.amazon.de/Graphics-GUIs-MATLAB/dp/1584883200/ref=sr_1_1?ie=UTF8&qid=1364249575&sr=8-1) 
sieht zwar recht altbacken aus, da steht aber alles drin, was du wissen 
musst (und noch viel mehr). Das Buch findet man auch als .pdf im 
Internet.

von Kevin K. (nemon) Benutzerseite


Lesenswert?

Nachtrag: wenn du mehrere parameter der Funktion übergibst, also sie 
deklarierst mit
function [x,y,z] = mein_Funktionsname(Param1,Param2,Param3)

kannst du die Funktion mit 0..3 Parametern aufrufen und mit
for i=1:nargin
    machwas
end

machwas so oft ausführen, wie du Parameter der Funktion übergeben hast.

von Guido C. (guidoanalog)


Angehängte Dateien:

Lesenswert?

Hallo,

sdggfd j. schrieb:
> wie kann ich mein Programmcode debbugen

wenn du größeres mit Matlab vor hast solltest Du Dich auf jeden Fall mit 
dem Debugger vertraut machen. Einen Breakpoint kannst Du wie im Anhang 
gezeigt setzen. Wenn die betreffende m-Datei aufgerufen wird, wird die 
Bearbeitung an dem Breakpoint angehalten. Anschließend kannst Du z. B. 
per Einzelschritt jeden Bearbeitungsschritt des Programms genau 
analysieren.

Mit freundlichen Grüßen
Guido

von J.-u. G. (juwe)


Lesenswert?

sdggfd j. schrieb:
> aber es laueft fuer nur 1 parameter sogar 2 bis 3 mal.

Wie hast Du das festgestellt?

Zeile 154:
1
[fexc, xp, xp1]= testDissjwibbeler_k_mems_var_Uac(zahl(j))
enthält einen rekursiven Aufruf Deiner Funktion 
"testDissjwibbeler_k_mems_var_Uac", ohne dass irgendwo ein 
Abbruchkriterium der Rekursion festgelegt wurde. Eigentlich müsste Deine 
Funktion unendlich oft wiederholt werden. Irgendwann dürfte aber der 
Speicher ausgehen, was zu einem Abbruch mit Fehlermeldung führen müsste.

> denn bin zu froh gewesen ein Matlab-Forum zu finden.
Auch wenn hier hin und wieder mal Threads zu Matlab auftauchen, ist 
µC.net sicher kein Matlab-Forum.

von Lara (Gast)


Lesenswert?

@juwe:
> µC.net sicher kein Matlab-Forum. : sorry, bin nur wie gesagt froh hier meine 
Fragen stellen zu können und ich Weiß, dass mir geholfen wird; in dem Sinne habe 
ich es gemeint.

> Zu Zeile 154: Ich habe das Programm jedes Mal abgebrochen, wenn ich gemerkt habe 
dass etwas nicht stimmt; deswegen kam ich nicht auf die Zeile 154. Ich habe die 
Zeile gelöscht und alles funktioniert jetzt reibungslos.

@Guido: Debuggen kann ich schon, nur möchte ich es auch wirklich und 
gezielt können, wenn ich zum Beispiel die Veränderung einer Variable im 
Programm verfolgen möchte.

@Kevin. K: dein Tipp mit dem Plot ist der Hammer, funktioniert 
einwandfrei.
        Ich werde mir mal das Buch anschauen.


Danke Leute, ihr habt mir sehr viel geholfen.

Lara

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
Lade...