У меня есть векторный набор данных (Nx3) с положением xyz. Я вычислил нормали для всех точек в моем наборе данных.Хотите фильтровать горизонтальные нормали в файле вектора xyz (matlab) Код работает, но не правильно
Что я хочу сделать, это отфильтровать все горизонтальные нормали (т. Е. Когда y-точки представляют собой вертикальную функцию в моих данных).
У меня есть это до сих пор, но это только фильтрация точек в x-пространстве. Я смущен, если я должен быть в пространстве xz или пространстве yz, чтобы отфильтровать горизонтальные нормали? Предложения?
%dimension Nx3 (N variable by scene used)
normals = 'normals.csv';
P1 = csvread(normals);
%dimension Nx3 (N variable by scene used)
pts = 'pts.csv';
P0 = csvread(pts);
threshold = .5
%calculate angle between normal vectors and rotated data
ang = atan2(P0(:,2) - P1(:,2), P0(:,1) - P1(:,1))
%filter data
filter = abs(ang) < threshold;
newNormals = P1(~filter, :);
newPts = P0(~filter,:);
dlmwrite('newpts.txt', finalPts, 'delimiter',' ')
finaly кто-то логическое индексирование :) Во всяком случае, что такое P0? Его не определено. Что касается вас, вы получаете только x Points, когда P1 (1,:) = [x, y, z], и вы просто смотрите на P1 (:, 2) и P1 (:, 1), z-Axis does not do что-нибудь. –
AH извините, я понял, что, когда я побежал его только сейчас. Я вращал данные, но просто оставил их, так как он не работал. Я только что редактировал свой оригинальный пост. – user3433572
Я также пробовал разные комбинации столбцов: ang = atan2 (P0 (:, 1) - P1 (:, 1), P0 (:, 3) - P1 (:, 3)), и то же самое происходит, это обрабатывает данные в плоскости x – user3433572