Facebook
From rider, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 189
  1. close all
  2. clear
  3. clc
  4.  
  5. load new_data_all_7.mat
  6.  
  7. temp_data = all_data;
  8. temp_label = all_data_label;
  9. clear all_data all_data_label
  10.  
  11. USER_NUM = 5;
  12. all_data = cell(USER_NUM,1);
  13. all_data{1} = temp_data{2};
  14. all_data{2} = temp_data{3};
  15. all_data{3} = temp_data{4};
  16. all_data{4} = temp_data{5};
  17. all_data{5} = temp_data{6};
  18. all_data_label{1} = temp_label{2};
  19. all_data_label{2} = temp_label{3};
  20. all_data_label{3} = temp_label{4};
  21. all_data_label{4} = temp_label{5};
  22. all_data_label{5} = temp_label{6};
  23.  
  24.  
  25. WINDOW = 100;
  26. Radius = 0.8;
  27. %% parameter:
  28. k_array = zeros(1,USER_NUM);%[0.02546,0.02835,0.02402, 0.02392];
  29. b_array = zeros(1,USER_NUM);%[11.98,6.703,13.62,16.47];
  30. %kx_array=zeros(1,USER_NUM);
  31. %bx_array = zeros(1,USER_NUM);
  32.  
  33.  
  34.        
  35. %% train
  36. for i = 1:USER_NUM
  37.     test_id = i;
  38.     train_array = 1:USER_NUM;
  39.     train_array(test_id) = [];
  40.    
  41.     num = 0;
  42.     x_array = zeros(1,WINDOW);
  43.     g_all_array= zeros(100,3);
  44.     y_array = zeros(1,WINDOW);
  45.    
  46.     for k = 1:USER_NUM-1
  47.         id = train_array(k);
  48.         for j = 1:length(all_data{id})
  49.             shot_type = all_data_label{id}{j}(1);
  50.             incoming_speed = all_data_label{id}{j}(4);
  51.             outgoing_speed = all_data_label{id}{j}(2);
  52.              if (shot_type == 1 || shot_type == 2) && outgoing_speed ~= 0
  53.                 ax = all_data{id}{j}(:,1);
  54.                 ay = all_data{id}{j}(:,2);
  55.                 az = all_data{id}{j}(:,3);
  56.                 gx = all_data{id}{j}(:,4);
  57.                 gy = all_data{id}{j}(:,5);
  58.                 gz = all_data{id}{j}(:,6);
  59.                 gy = two_side_interpolation_gy(gy);
  60.                 [hit_index, end_index, flag] = find_begin_and_end_index(gy);
  61.                 if flag == 0
  62.                     continue;
  63.                 end
  64.                 num = num + 1;
  65.            
  66.                 x_array(num,:) = abs(gy(hit_index)*Radius);
  67.                    
  68.                
  69.                 temp=[ abs(gy(hit_index)*Radius) abs(gx(hit_index)*Radius) abs(gz(hit_index)*Radius)];
  70.                 g_all_array(num,:)=temp;
  71.                 y_array(num,:) = all_data_label{id}{j}(2);
  72.             end
  73.         end
  74.     end
  75.     tempy=transpose(y_array(:,1));
  76.    %for one array feature this works
  77.     tempgy=transpose(g_all_array);
  78.     TEMP_Y=[tempy;tempy;tempy];
  79.     b=regress(y_array(:,1),g_all_array(:,1));
  80.    
  81.    %  param = polyfit(x_array,y_array,1);
  82.     param = polyfit(tempgy,TEMP_Y,3);
  83.     %param_all = polyfit(g_all_array,tempy,3);
  84.     ky_array(i)=b(1);
  85.    
  86.   % b_all_array(i)=param(4);
  87.    
  88.    % k_array(i) = param(1);
  89.     %b_array(i) = param(2);
  90. end
  91.  
  92.  
  93.  
  94. %% test
  95. disp(b);
  96. results = cell(USER_NUM,1);
  97. for id = 1:USER_NUM
  98.     num = 0;
  99.     predicted_array = zeros(1,1);
  100.     predicted_all_array= zeros(1,1);
  101.     real_array = zeros(1,1);
  102.     for j = 1:length(all_data{id})
  103.         shot_type = all_data_label{id}{j}(1);
  104.         incoming_speed = all_data_label{id}{j}(4);
  105.         outgoing_speed = all_data_label{id}{j}(2);
  106.         if (shot_type == 1 || shot_type == 2) && outgoing_speed ~= 0 %&& flag == 2
  107.            
  108.             ax = all_data{id}{j}(:,1);
  109.             ay = all_data{id}{j}(:,2);
  110.             az = all_data{id}{j}(:,3);
  111.             gx = all_data{id}{j}(:,4);
  112.             gy = all_data{id}{j}(:,5);
  113.             gz = all_data{id}{j}(:,6);
  114.             gy = two_side_interpolation_gy(gy);
  115.             [hit_index, end_index, flag] = find_begin_and_end_index(gy);
  116.             if flag == 0
  117.                 continue;
  118.             end
  119.            
  120.             num = num + 1;
  121.            % predicted_array(num) = k_array(id)*abs(gz(hit_index)*Radius) + b_array(id);
  122.           % 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);
  123.           predicted_all_array(num)=ky_array(id)*abs(gy(hit_index)*Radius);
  124.             real_array(num) = all_data_label{id}{j}(2);
  125.         end
  126.     end
  127.     results{id} = [predicted_all_array;real_array];
  128. end
  129.  
  130.  
  131.  
  132. A = [results{1}(1,:),results{2}(1,:),results{3}(1,:),results{4}(1,:),results{5}(1,:)];
  133. B = [results{1}(2,:),results{2}(2,:),results{3}(2,:),results{4}(2,:),results{5}(2,:)];
  134. error = mean(abs(A-B))
  135. error_std = std(abs(A-B))
  136. accuracy = mean(1 - abs(A - B)./B)
  137.