octave:2> diag([1;2;3]) ans = Diagonal Matrix 1 0 0 0 2 0 0 0 3 octave:3> diag([1;2;3])+diag([4;5],1) ans = 1 4 0 0 2 5 0 0 3 octave:4> diag([1;2;3])+diag([4;5],1)+diag([6;7],-1) ans = 1 4 0 6 2 5 0 7 3 octave:5> spdiags([[NaN;6;7],[1;2;3],[4;5;NaN]],[-1,0,1],3,3) ans = Compressed Column Sparse (rows = 3, cols = 3, nnz = 7 [78%]) (1, 1) -> 1 (2, 1) -> NaN (1, 2) -> 5 (2, 2) -> 2 (3, 2) -> 6 (2, 3) -> NaN (3, 3) -> 3 octave:6> spdiags([[6;7;NaN],[1;2;3],[NaN;4;5]],[-1,0,1],3,3) ans = Compressed Column Sparse (rows = 3, cols = 3, nnz = 7 [78%]) (1, 1) -> 1 (2, 1) -> 6 (1, 2) -> 4 (2, 2) -> 2 (3, 2) -> 7 (2, 3) -> 5 (3, 3) -> 3 octave:7> full(spdiags([[6;7;NaN],[1;2;3],[NaN;4;5]],[-1,0,1],3,3)) ans = 1 4 0 6 2 5 0 7 3 octave:8> x=1:10 x = 1 2 3 4 5 6 7 8 9 10 octave:9> x>=5 ans = 0 0 0 0 1 1 1 1 1 1 octave:10> x>=5 & x<=9 ans = 0 0 0 0 1 1 1 1 1 0 octave:11> (x>=5 & x<=9)*2 ans = 0 0 0 0 2 2 2 2 2 0 octave:12> (x>=5 & x<=9) ans = 0 0 0 0 1 1 1 1 1 0 octave:13> idx=(x>=5 & x<=9) idx = 0 0 0 0 1 1 1 1 1 0 octave:14> v=10:19 v = 10 11 12 13 14 15 16 17 18 19 octave:15> v(idx) ans = 14 15 16 17 18 octave:16> indice=[0,0,0,0,1,1,1,1,1,0] indice = 0 0 0 0 1 1 1 1 1 0 octave:17> v(indice) error: subscript indices must be either positive integers less than 2^31 or logicals octave:17> v(idx) ans = 14 15 16 17 18 octave:18> idx idx = 0 0 0 0 1 1 1 1 1 0 octave:19> indice indice = 0 0 0 0 1 1 1 1 1 0 octave:20> whos Variables in the current scope: Attr Name Size Bytes Class ==== ==== ==== ===== ===== ans 1x5 40 double idx 1x10 10 logical indice 1x10 80 double v 1x10 24 double x 1x10 24 double Total is 45 elements using 178 bytes octave:21> fem0 octave:22> fem0 octave:23> fem0 ans = 1.3878e-17 octave:24> n1 n1 = 2 octave:25> n2 n2 = 4 octave:26> fem0 ans = 3.5527e-15 octave:27> fem0 ans = 3.5527e-15 ans = 8.0687e-05 octave:28> fem0 ans = 4.6074e-15 ans = 2.0172e-05 octave:29> A=rand(4) A = 0.963283 0.280245 0.810762 0.644199 0.957843 0.873149 0.974050 0.037869 0.728327 0.782596 0.301298 0.071294 0.638561 0.197517 0.781704 0.951620 octave:30> u=rand(4,1) u = 0.70851 0.87535 0.73927 0.10866 octave:31> A*(u.^2) ans = 1.14900 1.68266 1.13078 0.91035 octave:32> 2*u.*(A*u) ans = 2.26326 3.79406 2.11663 0.28395 octave:33> A=toeplitz([0,-1,0,0],[0,1,0,0]) A = 0 1 0 0 -1 0 1 0 0 -1 0 1 0 0 -1 0 octave:34> A*(u.^2) ans = 0.766243 0.044527 -0.754436 -0.546520 octave:35> 2*u.*(A*u) ans = 1.240401 0.053843 -1.133587 -0.160657 octave:36> epsilon=1e-4 epsilon = 1.0000e-04 octave:37> v=rand(4,1) v = 0.75765 0.25148 0.61009 0.66215 octave:38> f=@(u) A*(u.^2); octave:39> J=@(u) A*diag(2*u); octave:40> (f(u+epsilon*v)-f(u))/epsilon ans = 0.44027 -0.17160 -0.29633 -0.90208 octave:41> J(u)*v ans = 0.44027 -0.17158 -0.29637 -0.90204 octave:42> f=@(u) 2*u.*(A*u); octave:43> J1=@(u) 2*diag(A*u)+2*diag(u)*A; octave:44> J2=@(u) A*diag(2*u)+2*diag(A*u); octave:45> (f(u+epsilon*v)-f(u))/epsilon ans = 1.68282 -0.24289 -0.32826 -1.11168 octave:46> J1(u)*v ans = 1.68279 -0.24288 -0.32831 -1.11160 octave:47> J2(u)*v ans = 1.76670 -0.15611 -1.23187 -1.88106 octave:48> diary off