1 / 24

Handling Arrays 1/2

Handling Arrays 1/2. Numerical Computing with . MATLAB for Scientists and Engineers. You will be able to. Create vectors and matrices , Perform math operations on matrices , Extract part of a matrix, Plot simple graph using arrays,

thom
Télécharger la présentation

Handling Arrays 1/2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Handling Arrays 1/2 Numerical Computing with . MATLAB for Scientists and Engineers

  2. You will be able to • Create vectors and matrices, • Perform math operations on matrices, • Extract part of a matrix, • Plotsimple graph using arrays, • Manipulatesound using array operations

  3. Simple Array • Array: Collection of scalar values • Vector: n x 1 or 1 x n • Matrix: n x m >> m = [ 1 3 2 4] m = 1 3 2 4 >> v = [ 1; 2; 3; 4] v = 1 2 3 4 >> M = [ 1 2; 3 4] M = 1 2 3 4 row vector column vector matrix

  4. Size of Arrays • whos: prints its size, class, number of bytes • size: print its number of rows and columns • length: max(size(v)) s=size(a) 2 3 a [m,n]=size(a) 3 2 m n 1 2 3 m=size(a,1) 2 4 5 6 n=size(a,2) 3 l=length(a) 3 e=numel(a) 6

  5. Plotting Arrays • plot, stem, bar, ... matrix_plot.m %% Plotting vector v = [1 3 2 4]; figure(1), plot(v,'r-'); figure(2), plot(v,'bs'); figure(3), stem(v); figure(4), bar(v) %% plotting matrix M = [1 3 2 4 8 3 5; 2 6 1 2 4 5 2]'; figure(5), plot(M) figure(6), bar(M)

  6. Complex Array Element • MATLAB understands i or j as [ i 8 1+i sin(0.1*pi)] 0 + 1.0000i 8.0000 1.0000 + 1.0000i 0.3090 a=[ i 8 1 + i 2 * 4 ] MATLAB is smart! 0 + 1.0000i 8.0000 1.0000 + 1.0000i 8 a(1) a(2) a(3) a(4)

  7. Array Addressing 1/2 • Array index starts from 1. Array Index : 1 2 3 4 5 6 0 a=[ 0:0.2:1]; 0.2 0.4 0.6 0.8 1.0 0 b=a(1:3); 0.2 0.4 0 b=a(1:2:5); 0.4 0.8 b=a(3:end); 0.6 0.8 1.0 0.4 b=a(end:-1:1); 1.0 0.8 0.6 0.4 0.2 0 b=a([3 1 4 2 6 5]); 0.4 0 0.6 0.2 1.0 0.8

  8. Array Addressing 2/2 • Index should be integer type or an integer value 0 a=[ 0:0.2:1]; 0.2 0.4 0.6 0.8 1.0 b=a(8); b=a(1.2); b=a(ceil(2.3*2)); 0.8 b=a(int16(2.3)); 0.2 b=a(int16([2.3 3.2]); 0.4 0.2

  9. Creating Arrays • Range: start : step : end 3.0000 a=[ 3 pi log(2) ]; 3.1416 0.6931 3 a=3:6; 4 5 6 8 a=8:-1:6; 7 6 5 0 a=[0:2:6] * 0.1; 0.2 0.4 0.6 1.00 a=linspace(1,2,5); 1.25 2.00 1.50 1.75 1 a=logpace(0,4,5); 10 10000 100 1000

  10. Exercise 1 - Creating Arrays • Create a row vector in which the first element is 5, and the last element is 41, with an increment of 3. • Create a column vector that has the elements: 3, ln(2), 0.34, and .

  11. Plotting Sound Waveform • Read a sound file using wavread( ) and plot it. waveform_plot.m [s Fs] = wavread('thankyou.wav'); Ts = 1/Fs; % time between two adjacent samples N = length(s); t = (0:N-1)*Ts; % generate time values figure(1), plot(t,s); soundsc(s,Fs) % play the sound

  12. Orientation • Row or Column Vector • Transpose operator: ' 3 a=[ 3;5;2 ]; 3 b=a'; 5 2 Transpose 5 2 a=[1 2; 4 5] b=a'; 1 2 1 4 4 5 2 5

  13. Complex Transpose • Hermitian – Complex conjugate transpose: ' • Just transpose: .' a=[1:3]'; 1 b=complex(a,a); 1+1i 2 2+2i 3 3+3i c=b'; 1-1i 2-2i 3-3i c=b.'; 1+1i 2+2i 3+3i

  14. Scalar – Array Math Operations • Scalar operations affect all the elements in the array. a=[1 2; 4 5] b=a+2 1 3 2 4 4 6 5 7 b=2*a-1 b=a/2+1 1 1.5 3 2.0 7 3.0 9 3.5

  15. Array – Array Math Operations 1/2 • Standard matrix operations apply. a=[1 2; 4 5] 1 2 x=a+b 2 4 4 5 5 6 b=[0 0; 1 1] 1 2 x=a.*b 1 4 1 1 4 5 x=a*b x=a/b 3 1 4 0 9 1 13 3

  16. Array – Array Math Operations 1/2 • Element wise operations: .*, ./, .^ a=[1 2; 4 5] 1 2 4 5 x=a.^2 x=2.^a 1 4 2 4 16 16 25 32 x=a^2 x=a.^a 9 1 12 4 24 256 33 3125

  17. Ones and Zeros • Useful for creating basic arrays for operations a=ones(2) b=ones(2,1) 1 1 1 1 1 1 c=zeros(3) d=size(c) 0 0 3 3 0 0 0 0 m=2*ones(2) 2 2 0 0 0 2 2

  18. Special Matrices • Identity matrix: eye(n) • Magic square: magic(n) b=eye(3,2) 1 0 a=eye(2) 1 0 0 1 0 1 0 0 c=rand(2) d=magic(3) 8 1 6 0.4103 0.0579 3 5 7 0.8936 0.3529 4 9 2 Uniform random variable between 0 and 1

  19. Diagonal Matrix • diag(v,n) a=1:3 b=diag(a) 1 1 0 0 2 3 0 2 0 0 0 3 b=diag(a,1) b=diag(a,-1) 0 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 2 0

  20. Array with the Same Elements • repmat( ) is the fastest. SLOW d=3.14 a = d * ones(5,3) 3.14 3.14 3.14 a = d + zeros(5,3) 3.14 3.14 3.14 3.14 3.14 3.14 a = d( ones(5,3) ) 3.14 3.14 3.14 a = repmat(d,5,3) 3.14 3.14 3.14 FAST

  21. Getting Sub-matrices • Getting rows • n-th row: M( n, : ) • m~n-th row: M( m:n,:) • Getting columns • r-th column: M( :, r ) • r~s-th cols: M( :,r:s) a= [1 2 3; 4 5 6; 7 8 9] b= a(1,:) 1 2 3 4 5 6 7 8 9 c= a(:,2:end)

  22. Exercise 2 - Sound Editing • Extract 'than-' female voice and '-kyou' male voice from 'thankyou.wav'. Concatenate them to forge a new 'thank-you' voice. Play the sound and plot the waveform. tha---n-- - k- you-- tha---n-- - k- you-- tha---n-- - k- you-- ref: two.wav

  23. Solution 2 • Script • Sound Waveform thankou_twovoices.m [s Fs] = wavread('thankyou.wav'); figure(1), plot(s); soundsc(s,Fs) % play the sound .. soundsc(two,Fs) % play the forged sound

  24. Notes

More Related