- close all
- clear
- clc
- load new_data_all_7.mat
- temp_data = all_data;
- temp_label = all_data_label;
- clear all_data all_data_label
- USER_NUM = 5;
- all_data = cell(USER_NUM,1);
- all_data{1} = temp_data{2};
- all_data{2} = temp_data{3};
- all_data{3} = temp_data{4};
- all_data{4} = temp_data{5};
- all_data{5} = temp_data{6};
- all_data_label{1} = temp_label{2};
- all_data_label{2} = temp_label{3};
- all_data_label{3} = temp_label{4};
- all_data_label{4} = temp_label{5};
- all_data_label{5} = temp_label{6};
- WINDOW = 100;
- Radius = 0.8;
- %% parameter:
- k_array = zeros(1,USER_NUM);%[0.02546,0.02835,0.02402, 0.02392];
- b_array = zeros(1,USER_NUM);%[11.98,6.703,13.62,16.47];
- %kx_array=zeros(1,USER_NUM);
- %bx_array = zeros(1,USER_NUM);
- %% train
- for i = 1:USER_NUM
- test_id = i;
- train_array = 1:USER_NUM;
- train_array(test_id) = [];
- num = 0;
- x_array = zeros(1,WINDOW);
- g_all_array= zeros(100,3);
- y_array = zeros(1,WINDOW);
- for k = 1:USER_NUM-1
- id = train_array(k);
- for j = 1:length(all_data{id})
- shot_type = all_data_label{id}{j}(1);
- incoming_speed = all_data_label{id}{j}(4);
- outgoing_speed = all_data_label{id}{j}(2);
- if (shot_type == 1 || shot_type == 2) && outgoing_speed ~= 0
- ax = all_data{id}{j}(:,1);
- ay = all_data{id}{j}(:,2);
- az = all_data{id}{j}(:,3);
- gx = all_data{id}{j}(:,4);
- gy = all_data{id}{j}(:,5);
- gz = all_data{id}{j}(:,6);
- gy = two_side_interpolation_gy(gy);
- [hit_index, end_index, flag] = find_begin_and_end_index(gy);
- if flag == 0
- continue;
- end
- num = num + 1;
- x_array(num,:) = abs(gy(hit_index)*Radius);
- temp=[ abs(gy(hit_index)*Radius) abs(gx(hit_index)*Radius) abs(gz(hit_index)*Radius)];
- g_all_array(num,:)=temp;
- y_array(num,:) = all_data_label{id}{j}(2);
- end
- end
- end
- tempy=transpose(y_array(:,1));
- %for one array feature this works
- tempgy=transpose(g_all_array);
- TEMP_Y=[tempy;tempy;tempy];
- b=regress(y_array(:,1),g_all_array(:,1));
- % param = polyfit(x_array,y_array,1);
- param = polyfit(tempgy,TEMP_Y,3);
- %param_all = polyfit(g_all_array,tempy,3);
- ky_array(i)=b(1);
- % b_all_array(i)=param(4);
- % k_array(i) = param(1);
- %b_array(i) = param(2);
- end
- %% test
- disp(b);
- results = cell(USER_NUM,1);
- for id = 1:USER_NUM
- num = 0;
- predicted_array = zeros(1,1);
- predicted_all_array= zeros(1,1);
- real_array = zeros(1,1);
- for j = 1:length(all_data{id})
- shot_type = all_data_label{id}{j}(1);
- incoming_speed = all_data_label{id}{j}(4);
- outgoing_speed = all_data_label{id}{j}(2);
- if (shot_type == 1 || shot_type == 2) && outgoing_speed ~= 0 %&& flag == 2
- ax = all_data{id}{j}(:,1);
- ay = all_data{id}{j}(:,2);
- az = all_data{id}{j}(:,3);
- gx = all_data{id}{j}(:,4);
- gy = all_data{id}{j}(:,5);
- gz = all_data{id}{j}(:,6);
- gy = two_side_interpolation_gy(gy);
- [hit_index, end_index, flag] = find_begin_and_end_index(gy);
- if flag == 0
- continue;
- end
- num = num + 1;
- % predicted_array(num) = k_array(id)*abs(gz(hit_index)*Radius) + b_array(id);
- % predicted_all_array(num)=ky_array(id)*abs(gy(hit_index)*Radius)+kx_array(id)*abs(gx(hit_index)*Radius) +kz_array(id)*abs(gz(hit_index)*Radius)+ b_all_array(id);
- predicted_all_array(num)=ky_array(id)*abs(gy(hit_index)*Radius);
- real_array(num) = all_data_label{id}{j}(2);
- end
- end
- results{id} = [predicted_all_array;real_array];
- end
- A = [results{1}(1,:),results{2}(1,:),results{3}(1,:),results{4}(1,:),results{5}(1,:)];
- B = [results{1}(2,:),results{2}(2,:),results{3}(2,:),results{4}(2,:),results{5}(2,:)];
- error = mean(abs(A-B))
- error_std = std(abs(A-B))
- accuracy = mean(1 - abs(A - B)./B)