2016-04-27 16 views
0

私は2行(L1とL2)があり、行間の交差点を見つけることができる次のコードを持っています。しかし、L1は決して変化しませんが、L2は変化しません。これは私が問題を抱えているところです。 x座標とy座標のリストを持つ.txtファイルがあります。私のリストの上位2つの数字のL2の数字660と122.75を入れ替えることができるように、コードを変更するにはどうすればいいですか?その後、交点を保存して、もう一度始めますが、今回は2つの数字をリストの2番目の数字に置き換えます。行の座標を変更するmatlab

よろしく、 エレミヤ

clc; 
clear; 

%% Load data 

filename = 'C:\blade1_data.txt'; 
delimiter = ' '; 
formatSpec = '%f%f%[^\n\r]'; 
fileID = fopen(filename,'r'); 
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'MultipleDelimsAsOne', true, 'ReturnOnError', false); 
fclose(fileID); 
X_coords = dataArray{:, 1}; 
Y_coords = dataArray{:, 2}; 
clearvars filename delimiter formatSpec fileID dataArray ans; 

%% Find intersection between lines 

L1 = [656.25 122.75; 611.625 378.875]; % Defines rotor line 
L2 = [0 122.75; 660 122.75]; % Defines coordinate where blade tip was located 


dx = diff(L1); %# Take the differences down each column 
dy = diff(L2); 
den = dx(1)*dy(2)-dy(1)*dx(2); %# Precompute the denominator 
ua = (dx(2)*(L2(1)-L2(3))-dy(2)*(L1(1)-L1(3)))/den; 
ub = (dx(1)*(L2(1)-L2(3))-dy(1)*(L1(1)-L1(3)))/den; 
% Intersection point of the two lines: 

xi = L1(1)+ua*dx(1); 
yi = L2(1)+ua*dy(1); 

答えて

0

の作業コード

clc; 
    clear; 

%% Load data 

filename = 'C:data.txt'; 
delimiter = ' '; 
formatSpec = '%f%f%[^\n\r]'; 
fileID = fopen(filename,'r'); 
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'MultipleDelimsAsOne', true, 'ReturnOnError', false); 
fclose(fileID); 
X_coords = dataArray{:, 1}; 
Y_coords = dataArray{:, 2}; 
clearvars filename delimiter formatSpec fileID dataArray ans; 

%% Find intersection between lines 
nfiles = length(X_coords); 

for n = 1: nfiles; 
    ptx = X_coords(n:n,1); 
    pty = Y_coords(n:n,1); 
L1 = [656.25 122.75; 611.625 378.875]; % Defines rotor line 
L2 = [0 pty; ptx pty]; % Defines coordinate where blade tip was located 


dx = diff(L1); %# Take the differences down each column 
dy = diff(L2); 
den = dx(1)*dy(2)-dy(1)*dx(2); %# Precompute the denominator 
ua = (dx(2)*(L2(1)-L2(3))-dy(2)*(L1(1)-L1(3)))/den; 
ub = (dx(1)*(L2(1)-L2(3))-dy(1)*(L1(1)-L1(3)))/den; 
% Intersection point of the two lines: 

xi = L1(1)+ua*dx(1); 
yi = L2(1)+ua*dy(1); 

data(n,:) = [xi yi]; 
end 
関連する問題