Verfasst am: 07.08.2011, 11:53
Titel: Programmcode geht nicht HILFEEE!
Hallo nochmal an alle,
ich habe noch eine letzte Bitte habe ein Programm was leider nicht bei mir funktioniert:( und zwar war die Aufgabe:
(a) Schreiben Sie eine Funktion function y = computeNjk(j,k,t,x),
welche den B-Spline Njk mit Hilfe des Algorithmus 4.3.14 (de Boor
Algorithmus) an der Stelle x zu gegeben
Stützstellen ti, i = 1, . . . ,N auswertet.
(b) Plotten Sie die B-Spline Basis von Sk,delta für
k = 2, delta= {0, 0.3, 0.8, 1},
k = 3, delta= {0, 0.5, 0.5.1},
k = 3, delta= {0, 0.3, 0.6, 1} und
k = 4, delta= {0, 0.25, 0.5, 0.5, 0.75, 1}
jeweils in eine Grafik. Verwenden Sie dabei für jede Basisfunktion eine andere Farbe.
subplot(2 ,2 ,2) ;
x = [0000.50.5111];
k = 3;
hold on
for j = 1:5 for i=1: length(t)
ft(i) = computeNjk (j,k,x,t(i));
end plot(t,ft , cols {j});
grid on;
end hold off
title('Teil (b)')
subplot(2 ,2 ,3) ;
x = [0000.30.6111];
k = 3;
hold on
for j = 1:5 for i=1: length(t)
ft(i) = computeNjk (j,k,x,t(i));
end plot(t,ft , cols {j});
grid on;
end hold off
title('Teil (c)')
subplot(2 ,2 ,4) ;
x = [00000.250.50.50.751111];
k = 3;
hold on
for j = 1:8 for i=1: length(t)
ft(i) = computeNjk (j,k,x,t(i));
end plot(t,ft , cols {j});
grid on;
end hold off
title('Teil (d)')
Hier wird dir aber niemand deine Hausaufgaben lösen. Offensichtlich weißt du nicht, wie man Funktionen aufruft. Siehe hierzu die gut dokumentierte Hilfe innerhalb MATLAB!
function y = computeNjk (j,k,x,t)
j=1;
k=2;
x=[123456];
t=[012345];
ind=find(x<=t);
l=ind(end); %HIER ZEIGT ES MIR EIN FEHLER???? was wird
den hier gemacht????
if(l<j) || (j+k <=l)
y=0;
return;
end
subplot(2 ,2 ,2) ;
x = [0000.50.5111];
k = 3;
hold on
for j = 1:5 for i=1: length(t)
ft(i) = computeNjk (j,k,x,t(i));
end plot(t,ft , cols {j});
grid on;
end hold off
title('Teil (b)')
subplot(2 ,2 ,3) ;
x = [0000.30.6111];
k = 3;
hold on
for j = 1:5 for i=1: length(t)
ft(i) = computeNjk (j,k,x,t(i));
end plot(t,ft , cols {j});
grid on;
end hold off
title('Teil (c)')
subplot(2 ,2 ,4) ;
x = [00000.250.50.50.751111];
k = 3;
hold on
for j = 1:8 for i=1: length(t)
ft(i) = computeNjk (j,k,x,t(i));
end plot(t,ft , cols {j});
grid on;
end hold off
title('Teil (d)')
Bitte poste immer die vollständige Fehlermeldung, wenn du im forum eine Auskunft über den Grund des Fehlers bekommen möchtest. Blicke in Kristallkugeln kosten nämlich extra.
Hier eine Erklärung, was passiert - dass kannst Du übrigens locker selbst Zeile für Zeile im Command Window ausprobieren:
Code:
x = [123456];
t = [012345];
tmp1 = (x <= t);
% Das bedeutet: % [1 2 3 4 5 6] <= [0 1 2 3 4 5] % Und dies wird elementweise berechnet: % [1<=0, 2<=1, 3<=2, 4<=3, 5<=4, 6<=5] % Und das ergibt: % [0, 0, 0, 0, 0, 0]
ind = find(tmp1);
% Das ergibt die leere Matrix [], und damit ist "end" gleich 0. % ind(end) gibt es demnach gar nicht.
x=[123456];
t=[012345];
ind=find(x<=t); % da kein "x" kleiner gleich "t" ist , gibt der "find" Befehl eine leere Matrix zurück
l=ind(end); % Zugriff auf den letzten Index einer leeren Matrix ist natürlich nicht möglich, daher der Fehler
... und du wolltest es mir in dem anderen Thread nicht glauben. Man kann also eben nicht davon ausgehen, dass jeder den Funktionsaufruf korrekt beherrscht .
hast ja Recht. In dem anderen Thread gab es zu jenem Zeitpunkt aber keine Infos über Fehlermeldungen bzgl. falscher Übergabewerte. Ich bin davon ausgegangen, dass die Funktion selbst verfasst war und der Autor somit auch Kenntnisse über einen korrekten Funktionsaufruf besitzt. Da war ich dann wohl etwas zu optimistisch
Die Fehlermeldung ist aussagekräftig. Es lohnt sich immer sie zu lesen.
Zitat:
habe es auch schon ausprobiert geht aber immer noch nicht???
Was genau hast Du probiert??
Ich hatte Dir nur erklärt, wo der Fehler liegt. Beheben kann ich ihn nicht, weil ich ja gar nicht weiß, was Du erreichen möchtest. Und das ist auch Dein Teil der Aufgabe.
In dem anderen Thread gab es zu jenem Zeitpunkt aber keine Infos über Fehlermeldungen bzgl. falscher Übergabewerte.
Ja manchmal meint es die Kristallkugel eben auch gut mit mir .
MFG
Sco
Einstellungen und Berechtigungen
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
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.