Verfasst am: 06.08.2011, 13:26
Titel: PRogrammcode B-Spline geht nicht HILFEEE!!
Ich brauche dringend Hilfe für meine Arbeit!!!!
function spline(n,order)
close all;
if (nargin ~= 2)
order = 4;
end
nplot = 100;
if (n < order)
display([' !!! Error: Choose n >= order=',num2str(order),' !!!']);
return;
end
figure(1);
hold on; box on;
set(gca,'Fontsize',16);
t = linspace(0,1,nplot);
for i = 1:n
title(['Choose ',num2str(i),' th. control point']);
p(i, = ginput(1);
hold off;
plot(p(:,1),p(:,2),'k-','LineWidth',2);
axis([0 1 0 1]);
hold on; box on;
if (i >= order)
T = linspace(0,1,i-order+2);
y = linspace(0,1,1000);
p_spl = DEBOOR(T,p,y,order);
plot(p_spl(:,1),p_spl(:,2),'b-','LineWidth',4);
end
plot(p(:,1),p(:,2),'ro','MarkerSize',10,'MarkerFaceColor','r');
end
title(['B-Spline-curve with ',num2str(n),' control points of order ',num2str(order)]);
ich habe ein Code unter Matlab die ich leider nicht plotten kann er zeigt mir immer Fehler an der Stelle if (n < order)
Ich gehe mal davon aus, dass es sich hier um eine selbst geschriebene Funktion handelt. Gib ihr mal einen anderen Namen. Die Funktion spline() gibt es nämlich schon in Matlab, was zu Fehlern führen kann.
Bitte Codebuttons des Fourms für das Posten von Code benutzen...dann ist es besser lesbar.
for i = 1:n
title(['Choose ',num2str(i),' th. control point']);
p(i,Smile = ginput(1);
hold off;
plot(p(:,1),p(:,2),'k-','LineWidth',2);
axis([0101]);
hold on; box on;
if(i >= order)
T = linspace(0,1,i-order+2);
y = linspace(0,1,1000);
p_spl = DEBOOR(T,p,y,order);
plot(p_spl(:,1),p_spl(:,2),'b-','LineWidth',4);
end plot(p(:,1),p(:,2),'ro','MarkerSize',10,'MarkerFaceColor','r');
end
title(['B-Spline-curve with ',num2str(n),' control points of order ',num2str(order)]);
Also falls du das Argument "n" nicht der Funktion übergibst kennt sie Matlab eben nicht, daher die Fehlermeldung! So einfach ist das . Zwar überprüfst du die Anzahl der übergebenen Argumente, weist aber nur "order" einen Wert zu, so dass du davon ausgehst das "n" immer übergeben wird. Falls das nicht der Fall ist, siehe oben.
Von einem richtigen Funktionsaufruf sollte man schon von ausgehen können...n ist ja auch als Inputargument definiert. Hast du die Funktion nach der Namensänderung auch unter dem neuen Namen abgespeichert?
Von einem richtigen Funktionsaufruf sollte man schon von ausgehen können
da hasst du Recht, aber ich habe hier schon vieles erlebt .
PS: Es wird wohl schon die richtige Funktion aufgerufen, ansonsten würde die Fehlermeldung ja eine Codezeile aus der Spline Funktion von Matlab anzeigen und nicht aus seiner.
also wenn ich einfach mal für n=5 einsetze, dann funktioniert dein Programm bei mir (also das komplette)! Eine Fehlermeldung erscheint dann nur weil ich deine Funktion "DEBOOR" nicht habe.
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.