Verfasst am: 15.06.2010, 00:44
Titel: Koordinatentransformation von N-O auf radial-tangential
Hallo alle zusammen,
ich habe da ein mathematisches Problemchen. Und zwar habe ich mittels einer Messsonde, welche sich auf einer Kreisbahn bewegt, Fließgeschwindigkeiten aufgenommen. Diese werden durch die Sonde als Nord- und Ostkomponente ausgegeben. Ich brauche aber die Geschwindigkeiten als radiale und tangentiale Komponente und muss dazu transformieren. Die Winkelgeschwindigkeit (360° in 81 Minuten =0,074°/s) und der Abweichungswinkel zum Norden zu Begin der Messung (Alpha =beliebig) sind bekannt. Zu Veranschaulichung hab ich noch mal ne Grafig angehängt.
Habe die Daten auch schon in Matlab importiert und in eine Matrix gepackt. Jetzt bräuchte ich nur noch ein Lösungsansatz für Koordinatetransformation.
Hoffe mal dass es nicht zu kompliziert erläutert wurde und Ihr mir helfen könnt.
So, nach langer Suche und viel probieren hier mal ein Auszug aus der Lösung:
Code:
function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [fname,fpath] = uigetfile('*.txt','*.000','Bitte Rohdaten auswählen (TXT-file)');
fid = fopen(fname,'r');
A=textscan(fid, '%*f %*f %*f %f %f %f %f %*f %*f %*f %*f %f %f %f %f %f %f %*f %f','delimiter', [':' '/']);
fclose(fid);
A = sortrows(A,11);
handles.myvar=cell2mat(A);
guidata(hObject, handles);
.
.
.
function pushbutton5_Callback(hObject, eventdata, handles) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
A=handles.myvar;
umlaufzeit=str2double(get(handles.umlaufzeit,'String'));
alpha=str2double(get(handles.alpha,'String'));
q=(A(1,1)*3600+A(1,2)*60+A(1,3)+A(1,4)/100);
B(:,2)=A(:,11); %Kopieren der Tiefen aus Matrix A
B(:,1)=((A(:,1)*3600+A(:,2)*60+A(:,3)+A(:,4)/100)-q)*(360/umlaufzeit); %Berechnung von Beta
[row]=find(B(:,1)<=alpha); %Berechnug von Gamma
B(row,3)=360-alpha+B(row,1);
clear row;
B(:,4)=round((A(:,5).*sind(B(:,3))+A(:,6).*cosd(B(:,3)))*10)/10; %Berechnung der radialen Komponente
B(:,5)=round((A(:,5).*cosd(B(:,3))-A(:,6).*sind(B(:,3)))*10)/10; %Berechnung der tangentialen Komponente
B(:,6)=A(:,7); %Kopieren der vertikalen Komponente aus Matrix A
B(all(B(:,1)>360, 2), :) = [];%Löschen aller Messwerte die über einen Räumerumlauf hinaus gehen
B = sortrows(B,[2,3]);
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.