hallo ihr,
ich habe im matlab eine gerade durch den ursrung erzeugt und möchte die nun um einen bestimmten wert parallel verschieben. kann mir da jemand weiter helfen?
wie hast du sie denn erzeugt? Denn eine Parallelverschiebung bedeutet ja, dass du enweder zu den y-Werten oder x-Werten eine Konstante addierst:
Code:
x = [-5:5];
y = 2*x;
figure,
hold on
axis([x(1) x(end) y(1) y(end)]),
plot(x,y,x+2,y,x,y+1),
line([00],[y(1) y(end)],'color',[000]) line([x(1) x(end)],[00],'color',[000]) legend('Ursprungsgerade g','g um 2 in x-Richtung','g um 2 in y-Richtung',0)
ich hab jetzt jeweil die x und die y-Achse verschoben...jetzt wollte ich über solve die schnittpunkte errechnen. das geht aber nicht , weil ich für die waagerechten linien keine funktion aufstellen kann. hat jemand eine idee, wie ich diese schnittpunkte mit matlab erhalte?
lg Claudzen
Geht das damit nicht?!
Du müsstest doch nur wissen, bei welchen y-Werten die Waagerechten liegen, dann brauchst du nur noch den x-Wert ermitteln, bei dem deine Funktion genau diesen y-Wert erreicht!
quatsch, war mein fehler... die senkrechten kann ich nicht mit einer funktion definieren... ich kann das zwar alles per hand errechnen, aber ich dachte es gibt auch einen befehl dafür? die funktion 'solve' kann mir nur helfen, wenn ich zwei funktionen habe...
ich hab oben im anhang den plot. jetzt will ich die schnittpunkte der erzeugten gitterlinien heraus bekommen... damit will ich dann die rechtecke bestimmen und die darin liegenden messpunkte zählen...ist sicher ne ganz einfache lösung, aber ich bekomm das gerade gar nicht gebacken...
das ist schon richtig... das problem dabei ist, dass ich die gitterlinien nicht als vektor habe...ich hab die gitterlinien folgendermaßen erzeugt:
Code:
%Bestimmung des Mittelpunktes nach Rotation
mean_x=mean_valuen+SD1*sqrt(2);
mean_y=mean_value-SD2;
%Erzeugung von Rechtecken
limit_SD1=(max_value_limit-mean_value)/SD1;
%longi_axis=rotate(longi_axis,[001],45,[mean_value mean_value 0]);
for i=0:limit_SD1-1
longi_axis1=mean_y+i*SD1;
plot(longi_axis,longi_axis1,'Color','r','LineStyle','-','Marker','None','EraseMode','None');
end for i=0:limit_SD1-1
longi_axis1=mean_y-i*SD1;
plot(longi_axis,longi_axis1,'Color','r','LineStyle','-','Marker','None','EraseMode','None');
end
limit_SD2=(max_value_limit-mean_value)/SD2;
for i=0:limit_SD2+1
transv1_axis=mean_x+i*SD2;
plot(transv1_axis,longi_axis,'Color','m','LineStyle','--','Marker','None','EraseMode','None');
end for i=0:limit_SD2+1
transv1_axis=mean_x-i*SD2;
plot(transv1_axis,longi_axis,'Color','m','LineStyle','--','Marker','None','EraseMode','None');
end
for i=0:limit_SD1-1
longi_axis1=mean_y+i*SD1;
plot(longi_axis,longi_axis1,'Color','r','LineStyle','-','Marker','None','EraseMode','None');
end for i=0:limit_SD1-1
longi_axis1=mean_y-i*SD1;
plot(longi_axis,longi_axis1,'Color','r','LineStyle','-','Marker','None','EraseMode','None');
end
limit_SD2=(max_value_limit-mean_value)/SD2;
Damit erzeugst du dir doch die Waagerechten Linien und analog auch die senkrechten, dass heißt du brauchst nur zwei zusätzliche Variablen einführen und du hast die x- und y-Werte:
Code:
% vor den Schleifen
xval = zeros(limit_SD2,1);
yval = zeros(limit_SD1,1);
% in den Schleifen nach der Berechnung von longi_axis1 und transv1_axis
yval(i) = longi_axis1;
% bzw:
xval(i) = transv1_axis;
das ist natürlich eine sehr gute idee... hätte ich auch selber drauf kommen können:-)
danke dir!!!!!!!!!
lg claudzen
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.