1 1.Basic Operations 2 5+6 3 3-2 4 5*8 5 1/2 6 2^6 7 1 == 2 %false ans = 0 8 1 ~= 2 %true ans = 1 9 1 && 0 %AND ans = 0 10 1 || 0 %OR ans = 1 11 xor(1,0) %ans = 1 12 PS1('>> '); %change the command prompt info 13 a = 3 %show a = 3 in screen 14 a = 3 %not show a = 3 in screen 15 b = 'hi' 16 c = (3>=1) 17 a = pi; %a = 3.1416 18 disp(sprintf('2 decimals: %0.2f',a)) %2 decimals: 3.14 19 disp(sprintf('6 decimals: %0.6f',a)) %2 decimals: 3.141593 20 format long %a = 3.14159265358979 21 format short %a = 3.1416 22 23 2. Matrices and Vectors 24 A = [1 2; 3 4; 5 6] 25 v = [ 1 2 3] 26 v = [1; 2; 3] 27 v = 1:0.1:2 %1.0 1.1 1.2 ... 2.0 28 v = 1:6 29 v = ones(2,3) 30 c = 2*ones(2,3) 31 w = ones(1,3) 32 w = zeros(1,3) 33 w = rand(1,3) 34 w = rand(3,3) 35 w = randn(1,3) %Gossian distribution 36 w = -6 + sqrt(10)*(randn(1,10000)) 37 hist(w) %draw a histogram 38 hist(w,50) 39 I = eye(4) 40 help eye 41 help rand 42 help help 43 44 3.Moving data around 45 A = [1 2; 3 4; 5 6] 46 size(A) %ans = 3 2 47 size(A,1) %ans = 3 48 size(A,2) %ans = 2 49 A(3,2) %ans = 6 50 A(2,:) %the second row, ':' means every elements along that row/column 51 A(:,2) %the second column 52 A([1 3],:) %the first and the third row 53 A(:,2) = [10; 11; 12] 54 A = [A, [100; 101; 102]] %append another column vector to right 55 A(:) %put all elements of A into a single vector 56 A = [1 2; 3 4; 5 6] 57 B = [11 12; 13 14; 15 16] 58 C = [A B] %3 * 4 59 C = [A; B] %6 * 2 60 61 62 v = [1 2 3 4] 63 length(v) %ans = 4 64 length(A) %ans = 3 65 length([1;2;3;4;5]) %ans = 5 66 67 pwd %current path 68 cd 'path...' 69 ls 70 71 load featuresX.dat 72 load priceY.dat 73 load('featuresX.dat') 74 load('priceY.dat') 75 76 who %show the variables in current scope 77 whos %show the variables detail in current scope 78 size(featuresX) %ans = 47 2 79 80 v = priceY(1:10) 81 82 save hello.mat v; %save v into a file named "hello.mat"(BINARY) 83 save hello.txt v; %txt format can be understood by human(ASCII) 84 clear featuresX %delete featuresX from current scope 85 clear %delete all variables in current scope 86 87 4.Computing on data 88 A = [1 2; 3 4; 5 6] 89 B = [11 12; 13 14; 15 16] 90 C = [1 1; 2 2] 91 A*C 92 A.*B %'.' element operation 93 A.^2 94 v = [1; 2; 3] 95 1./v 96 log(v) 97 exp(v) 98 abs(v) 99 -v %-1*v 100 v + ones(length(v),1) % v + 1, v + ones(3,1) 101 A' %transpose 102 103 a = [1 15 2 0.5] 104 val = max(a) %val = 15 105 [val, ind] = max(a) %val=15 ind(ex)=2 106 max(A) %ans = 5 6 107 a < 3 %element wise comparison: ans = 1 0 1 1 108 find(a<3) %ans = 1 3 4 109 A = magic(3) 110 [r, c] = find(A>=7) % r = 1; 3; 2 c = 1; 2; 3 ==>A(1,1) A(3,2) A(2,3) are greater than 7 111 help find 112 sum(a) 113 prod(a) 114 floor(a) 115 ceil(a) 116 max(rand(3),rand(3)) 117 max(A,[],1) %the maximum element in each column 118 max(A,[],2) %the maximum element in each row 119 max(A) %ans = 8 9 7 120 max(max(A)) %ans = 9 121 max(A(:)) %ans = 9 122 A = magic(9) 123 sum(A,1) %sum up each column 124 sum(A,2) %sum up each row 125 sum(sum(A.*eye(9))) %sum up the main diagonal 126 sum(sum(A.*flipud(eye(9)))) %sum up the other diagonal 127 pinv(A) %pseudo inverse 128 129 130 5. Plotting Data 131 t = [0:0.01:0.98] 132 y1 = sin(2*pi*4*t) 133 plot(t,y1);%sin function 134 y2 = cos(2*pi*4*t) 135 hold on; %put figures in one window 136 plot(t,y2,'r') %change the color of cos to red 137 xlabel('time') 138 ylabel('value') 139 legend('sin','cos') 140 title('my plot') 141 cd '/home/zhanghe'; 142 print -dpng 'myPlot.png' 143 close 144 figure(1);plot(t,y1); 145 figure(2);plot(t,y2); 146 subplot(1,2,1) %%divides plot into 1*2 grid access first element 147 plot(t,y1); 148 subplot(1,2,2) %%divides plot into 1*2 grid access second element 149 plot(t,y2); 150 axis([0.5 1 -1 1]) 151 clf; 152 A = magic(5) 153 imagesc(A) 154 imagesc(A),colorbar,colormap 155 156 157 6. Control statements 158 v = zeros(10,1) 159 for i=1:10, 160 v(i) = 2^i; 161 end; 162 indices = 1:10; 163 for i=indices, 164 disp(i); 165 end; 166 i = 1; 167 while i<=5, 168 v(i) = 100; 169 i = i+1; 170 end; 171 while true, 172 v(i) = 999; 173 i = i+1; 174 if i==6, 175 break; 176 end; 177 end; 178 v(1) = 2; 179 if v(1) == 1, 180 disp('One'); 181 elseif v(1) == 2, 182 disp('Two'); 183 else 184 disp('Else'); 185 end; 186 187 %Octave search path (advanced/optional) 188 addpath('/home/zhanghe/ml/ex1') 189 190 %Example of CostFunction 191 predictions = X*theta; 192 sqrErrors = (predictions-y).^2; 193 J = 1/(2*m) * sum(sqrErrors); 194 195 7.Vectorization 196 % Hypothesis Function 197 % Unvectorized implementation 198 prediction = 0.0; 199 for j = 1:n+1, 200 prediction = prediction + theta(j) * x(j) 201 end; 202 % Vectorized implementation 203 prediction = theta' * x 204 205 % Gradient descent(Simultaneous updates) 206 % Vectorized implementation 207 delta = 1/m*((hypothesis-y)*x) 208 theta = theta - alpha*delta