Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.59 KB | None | 0 0
  1. %%Variable Declarations
  2. count = 0;
  3. numShips = 20;
  4. numFeatures = 7;
  5. numPlanets = 4;
  6. fMatrix = zeros(numFeatures,numShips);
  7. AMatrix = zeros(numPlanets,numFeatures);
  8. gMatrix = zeros(numPlanets,numShips);
  9. numPermutations = 10;
  10. kConstant = 0.25;
  11. errorFormula = 0;
  12. errorMatrix = zeros(numFeatures,numShips);
  13. errorVector = zeros(numPermutations * numShips, 1);
  14.  
  15. %%Read-in training data
  16. fid = fopen('trainingdata.txt');
  17. trainingMatrix = textscan(fid, '%s%s%f32%f32%s%f32%s');
  18. fclose(fid);
  19.  
  20. trainingNameVector = trainingMatrix{1};
  21. trainingPlanetVector = trainingMatrix{2};
  22. trainingWarpVector = trainingMatrix{3};
  23. trainingFreqVector = trainingMatrix{4};
  24. trainingColorVector = trainingMatrix{5};
  25. trainingRatioVector = trainingMatrix{6};
  26. trainingActionVector = trainingMatrix{7};
  27.  
  28. %%Read-in noisy data
  29. fid = fopen('noisydata.txt');
  30. noisyMatrix = textscan(fid, '%s%s%s%s%s%s%s');
  31. fclose(fid);
  32.  
  33. %%Put data into vectors based on features
  34. noisyNameVector = noisyMatrix{1};
  35. noisyPlanetVector = noisyMatrix{2};
  36. noisyWarpVector = noisyMatrix{3};
  37. noisyFreqVector = noisyMatrix{4};
  38. noisyColorVector = noisyMatrix{5};
  39. noisyRatioVector = noisyMatrix{6};
  40. noisyActionVector = noisyMatrix{7};
  41.  
  42. %%Feature training
  43. for i = 1:numShips
  44. %%Klingon Features
  45. if strcmp(trainingColorVector{i},'Black')
  46. fMatrix(5,i) = 1;
  47. elseif strcmp(trainingColorVector{i},'DarkGray')
  48. fMatrix(5,i) = 1;
  49. elseif trainingFreqVector(i) > 1000 && trainingFreqVector(i) < 1010
  50. fMatrix(4,i) = 1;
  51. end
  52.  
  53. %%Romulan Features
  54. if strcmp(trainingColorVector{i},'Green')
  55. fMatrix(5,i) = 1;
  56. elseif strcmp(trainingColorVector{i},'DarkGreen')
  57. fMatrix(5,i) = 1;
  58. elseif ~strcmp(trainingColorVector{i},'DarkGray') && trainingWarpVector(i) > 7.1
  59. fMatrix(3,i) = 0.5;
  60. elseif ~strcmp(trainingColorVector{i},'Black') && trainingFreqVector(i) < 1000
  61. fMatrix(4,i) = 0.5;
  62. elseif ~strcmp(trainingColorVector{i},'DarkGray') && trainingFreqVector(i) < 1000
  63. fMatrix(4,i) = 0.5;
  64. end
  65.  
  66. %%Antarean Features
  67. if strcmp(trainingColorVector{i},'Pink')
  68. fMatrix(5,i) = 1;
  69. elseif strcmp(trainingColorVector{i},'Yellow')
  70. fMatrix(5,i) = 1;
  71. elseif strcmp(trainingColorVector{i},'Orange')
  72. fMatrix(5,i) = 1;
  73. elseif findstr('A',trainingNameVector{i})
  74. fMatrix(1,i) = 1;
  75. elseif findstr('E',trainingNameVector{i})
  76. fMatrix(1,i) = 1;
  77. elseif findstr('0' || '1' || '2' || '3' || '4' || '5' || '6' || '7' || '8' || '9',trainingNameVector{i})
  78. fMatrix(1,i) = 1;
  79. end
  80.  
  81. %%Federation Features
  82. if strcmp(trainingColorVector{i},'White')
  83. fMatrix(5,i) = 1;
  84. elseif trainingWarpVector(i) < 6.8 && trainingFreqVector(i) > 1040
  85. fMatrix(3,i) = 1;
  86. elseif strcmp('LightGray',trainingColorVector{i}) && trainingFreqVector(i) > 1040
  87. fMatrix(4,i) = 1;
  88. elseif strcmp('LightBlue',trainingColorVector{i}) && trainingFreqVector(i) > 1040
  89. fMatrix(4,i) = 1;
  90. elseif strcmp('LightColor',trainingColorVector{i}) && trainingFreqVector(i) > 1040
  91. fMatrix(4,i) = 1;
  92. end
  93. end
  94.  
  95. %%Create g Matrix
  96. for i = 1:numShips
  97. if i < 6
  98. gMatrix(1,i) = 1;
  99. elseif i < 11 && i > 5
  100. gMatrix(2,i) = 1;
  101. elseif i < 16 && i > 10
  102. gMatrix(3,i) = 1;
  103. elseif i < 21 && i > 15
  104. gMatrix(4,i) = 1;
  105. end
  106. end
  107.  
  108. for i = 1:numPermutations
  109. %%Determine the order in which variables will be extracted
  110. order = randperm(numShips);
  111.  
  112. for j = 1:numShips
  113. %%Keep track of the position in the total error vector
  114. count = count + 1;
  115.  
  116. %%Extract corresponding vectors f and g based on order
  117. f = fMatrix(:,order(j));
  118. g = gMatrix(:,order(j));
  119.  
  120. %%Find g' based on the current A
  121. gPrime = AMatrix * f;
  122.  
  123. %%Calculate the error based on the given formula
  124. errorFormula = kConstant * (g - gPrime) * f';
  125.  
  126. %%Make modifications to A based on the results from the formula
  127. AMatrix = AMatrix + errorFormula;
  128.  
  129. %%Create a matrix of g'
  130. gPrimeMatrix = AMatrix * fMatrix;
  131.  
  132. %%Calculate a matrix of errors based on what g is supposed to be
  133. %%compared to what we have our g'
  134. errorMatrix = gMatrix - gPrimeMatrix;
  135.  
  136. %%Calculate total error and get the average
  137. totalError = 0;
  138. for k = 1:numShips
  139. totalError = totalError + norm(errorMatrix(:,k));
  140. end
  141. errorVector(count) = totalError / numShips;
  142. end
  143. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement