User Tools

Site Tools


visual3d:documentation:pipeline:expressions:least_squares_fitting_of_data

This is an old revision of the document!


the resulting plane is defined by 4 components]]] example: compute a best_plane_fit for one signal across a range of frames **evaluate_expression** /expression=best_fit_plane(current_signal,event_label::original::start,event_label::original::end) /signal_types=target /signal_folder=original /signal_names=lsk_1 /result_types=metric /result_folders=processed /result_name=lsk1_plane /apply_as_suffix_to_signal_name=true **;** example: compute a best_plane_fit for multiple signals at each frame of data **evaluate_expression** /expression=best_fit_plane(current_signal) /signal_types=target /signal_folder=original /signal_names=lsk_1+lsk_2+lsk_3 /result_types=derived /result_folders=processed /result_name=lsk_plane /apply_as_suffix_to_signal_name=true **;** ===== best fit circle ===== **best_fit_circle**(signal, start_event_signal, end_event_signal) fit a 2d circle to the path of a signal. the algorithm computes a best fit plane to the data, rotates this plane into a principal plane, computes the center and radius, the rotates these values back into the original plane. the result is 4 components; the x,y,z location of the origin and the radius. \\ ===== best fit sphere ===== **best_fit_sphere**(signal,start_event_signal,end_event_signal) example : fit a sphere to 6 points on a diamond create 6 targets representing the vertices [[visual3d:documentation:pipeline:signal_commands:create_target|create_target]] /signal_names=v1 ! /signal_description= /expression=vector((0.5+0*frame_numbers::original::frames),0,0) ! /include_calfile=false **;** [[visual3d:documentation:pipeline:signal_commands:create_target|create_target]] /signal_names=v2 ! /signal_description= /expression=vector((-0.5+0*frame_numbers::original::frames),0,0) ! /include_calfile=false **;** [[visual3d:documentation:pipeline:signal_commands:create_target|create_target]] /signal_names=v3 ! /signal_description= /expression=vector((0,0.5+0*frame_numbers::original::frames),0) ! /include_calfile=false **;** [[visual3d:documentation:pipeline:signal_commands:create_target|create_target]] /signal_names=v4 ! /signal_description= /expression=vector((0,-0.5+0*frame_numbers::original::frames),0) ! /include_calfile=false **;** [[visual3d:documentation:pipeline:signal_commands:create_target|create_target]] /signal_names=v5 ! /signal_description= /expression=vector((0,0,0.5+0*frame_numbers::original::frames)) ! /include_calfile=false **;** [[visual3d:documentation:pipeline:signal_commands:create_target|create_target]] /signal_names=v6 ! /signal_description= /expression=vector((0,0,-0.5+0*frame_numbers::original::frames)) ! /include_calfile=false **;** **evaluate_expression** /expression=best_fit_sphere(current_signal) /signal_types=target /signal_folder=original /signal_names=v1+v2+v3+v4+v5+v6 /result_types=derived ! /result_folders=processed /result_name=sphere ! /apply_as_suffix_to_signal_name=false **;** note that targets are created and the sphere computed has each target on its surface. sphere1.jpgsphere6view.jpg example : create a target where each frame is on a random location on the surface of a sphere of radius 1 **evaluate_expression** /expression=rand(-pi(),pi(),frame_numbers::original::frames) /result_types=derived /result_folders=radius /result_name=vertical ! /apply_as_suffix_to_signal_name=false **;** **evaluate_expression** /expression=rand(0,2*pi(),frame_numbers::original::frames) /result_types=derived /result_folders=radius /result_name=horizontal ! /apply_as_suffix_to_signal_name=false **;** [[visual3d:documentation:pipeline:signal_commands:create_target|create_target]] /signal_names=sphere ! /signal_description= /expression=vector( cos(derived::radius::vertical)*cos(derived::radius::horizontal), -cos(derived::radius::vertical)*sin(derived::radius::horizontal), sin(derived::radius::vertical)) ! /include_calfile=false **;** **evaluate_expression** /expression=best_fit_sphere(current_signal) /signal_types=target /signal_folder=original /signal_names=sphere /result_types=derived ! /result_folders=processed /result_name=sphere ! /apply_as_suffix_to_signal_name=false **;** random8view.jpg sphererandom.jpg ===== simple linear regression ===== **simple_linear_regression**(signal1, signal2, start_event, end_event); - fit a signal to a line. y = mx + b. signal2 = m signal1 + b an explanation of the calculation can be found [[visual3d:documentation:statistics:compute_linear_regression|here]] or [[[https://en.wikipedia.org/wiki/simple_linear_regression|here]]] signal1 and signal2 are one component signals resulting metric signal contains 6 components slope = m -> component 1 intercept = b -> component 2 siga = uncertainty in m -> component 3 sigb = uncertainty in b -> component 4 chi2 = chi square -> component 5 q = the r^2 statistic -> component 6 }}}}}}

visual3d/documentation/pipeline/expressions/least_squares_fitting_of_data.1718804215.txt.gz · Last modified: 2024/06/19 13:36 by sgranger