1 / 61

第 3 章 檔案、 函數 、 資料結構 files, functions , and data structures

第 3 章 檔案、 函數 、 資料結構 files, functions , and data structures. Why use ‘files’?. 多行指令 or 日後重複使用. 3 types of files. *.m, ~ in ASCII format *.mat, ~ in binary format (variables in work space) data file ~ in ASCII format. Recording ur session. diary ~ save in the file ‘ diary ’

declan
Download Presentation

第 3 章 檔案、 函數 、 資料結構 files, functions , and data structures

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. 第3章 檔案、函數、資料結構files, functions, and data structures Puff! The magic dragon, live by the tree…

  2. Puff! The magic dragon, live by the tree…

  3. Why use ‘files’? • 多行指令 or 日後重複使用 Puff! The magic dragon, live by the tree…

  4. 3 types of files • *.m, ~ in ASCII format • *.mat, ~ in binary format (variables in work space) • data file ~ in ASCII format Puff! The magic dragon, live by the tree…

  5. Recording ur session • diary ~ save in the file ‘diary’ • type diary ~ u can see the record after u have typed ‘diary’ • diary filename ~ assign the filename that will be recorded • get(O,’diary’) ~ ‘on’ or ‘off’ ~ see the situation that whether diary is on or off! Puff! The magic dragon, live by the tree…

  6. Saving and retriving ur workspace variables~ save & load • save ~ in matlab.mat • save filename • load filename • save filename var1 var2 • save filename –ASCII • save filename –double Puff! The magic dragon, live by the tree…

  7. Importing data from externally generated files • load filename (remember to remove the header first) • e.g. load force.dat ~ than we get a matrix named ‘force’ • Don’t use ‘*.mat’ as the data file! Puff! The magic dragon, live by the tree…

  8. Importing spreadsheet files • M=wk1read(‘filename’) • A=xlsread(‘filename’) • [A,B] =xlsread(‘filename’) • Try to generate a 3 by 10 matrix with all elements are ’10’ in excel, and save it as ‘ggg.xls’ • Try to read it from matlab Puff! The magic dragon, live by the tree…

  9. The import wizard • importing data • exporting data Puff! The magic dragon, live by the tree…

  10. Importing ASCII data • P.129 attentions! • Data type: numeric? Text? Or in mixed type! Puff! The magic dragon, live by the tree…

  11. Import ASCII data files with text headers • P.130-131 Puff! The magic dragon, live by the tree…

  12. Importing mixed text and numeric ASCII data • P.131-132 Puff! The magic dragon, live by the tree…

  13. Importing binary data files • ?A=[1 2 3; 4 5 6; 7 8 9] • A = • 1 2 3 • 4 5 6 • 7 8 9 • ?save my_data.out A -ascii • ?type A • ??? Error using ==> type • a.m: File not found. • type my_data.out Puff! The magic dragon, live by the tree…

  14. Controlling input & output • ?speed=30 • speed = • 30 • ?disp('The predicted speed is:') • The predicted speed is: • ?disp(speed) • 30 Puff! The magic dragon, live by the tree…

  15. Example (p.134-135) Puff! The magic dragon, live by the tree…

  16. ?a=3/7 • a = • 0.4286 • ?format long • ?a • a = • 0.42857142857143 • ?format short e • ?a • a = • 4.2857e-001 • ?format long e • ?a • a = • 4.285714285714286e-001 Puff! The magic dragon, live by the tree…

  17. Puff! The magic dragon, live by the tree…

  18. Puff! The magic dragon, live by the tree…

  19. Puff! The magic dragon, live by the tree…

  20. Puff! The magic dragon, live by the tree…

  21. ?format rat • ?a • a = • 3/7 • ?format bank • ?a • a = • 0.43 Puff! The magic dragon, live by the tree…

  22. User input • input (‘please enter the value of x’) • If x, y exist first! • ?k=menu('Choose a data marker','o','*','x'); • ?type=['o','*','x']; • ?k • k = • 2 • ?plot(x,y,x,y,type(k)) Puff! The magic dragon, live by the tree…

  23. User input • xi=input ('please enter the initial value of x ') • xf=input ('please enter the initial value of x ') • x=[xi:0.01:xf]; • y=sin(x); • k=menu('Choose a data marker','o','*','x'); • k • type=['o','*','x']; • plot(x,y,x,y,type(k)) Puff! The magic dragon, live by the tree…

  24. Elementary mathematical functions • ?lookfor imaginary • I Imaginary unit. • J Imaginary unit. • COMPLEX Construct complex result from real and imaginary parts. • IMAG Complex imaginary part. Puff! The magic dragon, live by the tree…

  25. Exponential & logarithmic functions • ?x=9; • ?y=sqrt(x); • ?x,y • x = • 9 • y = • 3 Puff! The magic dragon, live by the tree…

  26. Complex number functions • x=a+b*I ~ (M,th) • M=sqrt(a^2+b^2) ~ abs(x) • th=arctan(b/a) ~ angle(x) • a=M*cos(th) ~ real(x) • b=M*sin(th) ~ imag(x) Puff! The magic dragon, live by the tree…

  27. Complex number functions • a=input('please input the real part ') • b=input('please input the real part ') • x=a+b*i • M=sqrt(a^2+b^2) • M1=abs(x) • th=atan(b/a) • th1=angle(x) • th2=atan2(b,a) • aa=M*cos(th2) • aa1=real(x) • bb=M*sin(th2) • bb1=imag(x) Puff! The magic dragon, live by the tree…

  28. Complex number functions • th = • -0.9273 • th1 = • 2.2143 • th2 = • 2.2143 • aa = • -3.0000 • aa1 = • -3 • bb = • 4.0000 • bb1 = • 4 • >> test5 • please input the real part -3 • a = • -3 • please input the real part 4 • b = • 4 • x = • -3.0000 + 4.0000i • M = • 5 • M1 = • 5 Puff! The magic dragon, live by the tree…

  29. Puff! The magic dragon, live by the tree…

  30. ?y=-3+4*i • y = • -3.0000 + 4.0000i • ?angle(y) • ans = • 2.2143 • 第二象限 • x = • 3.0000 - 4.0000i • ?abs(x) • ans = • 5 • ?angle(x) • ans = • -0.9273 • 第四象限 Puff! The magic dragon, live by the tree…

  31. x is a vector • abs(x) ~ return all the absolute value of each elements ~ a vector again! • We can use sqrt(x’*x) to obtain the ‘length’ of the vector x when x is a column vector • We can use sqrt(x*x’) to obtain the ‘length’ of the vector x when x is a row vector Puff! The magic dragon, live by the tree…

  32. ?sum_angle=angle_x+angle_y • sum_angle = • 1.2870 • ?sum1=angle(x+y) • sum1 = • -0.9273 • ?angle_product=angle(x*y) • angle_product = • 1.2870 • ?x=-3+4i • x = • -3.0000 + 4.0000i • ?y=6-8i • y = • 6.0000 - 8.0000i • ?mag_x=abs(x) • mag_x = • 5 • ?angle_x=angle(x) • angle_x = • 2.2143 • ?angle_y=angle(y) • angle_y = • -0.9273 Puff! The magic dragon, live by the tree…

  33. Numerical functions • ?x=[5,7,15] • x = • 5 7 15 • ?y=sqrt(x) • y = • 2.2361 2.6458 3.8730 Puff! The magic dragon, live by the tree…

  34. ?ceil(x1) • ans = • 3 • ?ceil(x2) • ans = • 3 • ?floor(x1) • ans = • 2 • ?floor(x2) • ans = • 2 • What happen when x1=-2.1, x2=-2.9? • ?x1=2.1 • x1 = • 2.1000 • ?x2=2.9 • x2 = • 2.9000 • ?round(x1) • ans = • 2 • ?round(x2) • ans = • 3 • ?fix(x1) • ans = • 2 • ?fix(x2) • ans = • 2 Puff! The magic dragon, live by the tree…

  35. Puff! The magic dragon, live by the tree…

  36. Trigonometric functions • ?x=[1;2;3] • x = • 1 • 2 • 3 • ?sin(x.^2+5) • ans = • -0.2794 • 0.4121 • 0.9906 • ?sin(sqrt(x)+1) • ans = • 0.9093 • 0.6649 • 0.3982 Puff! The magic dragon, live by the tree…

  37. atan(y/x), atan2(y,x) • x = • 3 • ?y=-4 • y = • -4 • ?atan(y/x) • ans = • -0.9273 • ?atan2(y,x) • ans = • -0.9273 Puff! The magic dragon, live by the tree…

  38. Puff! The magic dragon, live by the tree…

  39. Hyperbolic functions Puff! The magic dragon, live by the tree…

  40. Puff! The magic dragon, live by the tree…

  41. Self testing • P.143 • Use ur calculator now • Use ur computer after this class Puff! The magic dragon, live by the tree…

  42. User-defined functions • function file ~ local variables • function definition line 函數定義列~1st line function[output variables]=function_name(input variables); • save as function_name.m Puff! The magic dragon, live by the tree…

  43. function definition line 函數定義列 • function[area_square]=square(side) 1 input/1 output • function area_square=square(side) 1 input/1 output • function[volume_box]=box(height, width,length) 3 input/1 output • function[area_circle,circumf]=circle(radius) 1 input/2 output • function sqplot(side) ~ just plotting Puff! The magic dragon, live by the tree…

  44. a=32.2; %call_drop.m • initial_speed=10; • time=5; • [feet_Dropped,speed]=drop(a, initial_speed,time) • %[feet_Dropped,speed]=drop(32.2,10, 5) • %[feet_Dropped,speed]=drop(32.2,10, [0:1:5]) • function[dist, vel]=drop(g,v0,t); • %calculate the velocity and falling distance for the free falling body • %input var: acceleration, initial vel. v0, falling time t • vel=g*t+v0; • dist=0.5*g*t.^2+v0*t; Puff! The magic dragon, live by the tree…

  45. Local variables • U can use it freely in the functions • U don’t have to care any multi-use of the variable Puff! The magic dragon, live by the tree…

  46. Global variables • Common used variables! • See p.147-149 for detail description Puff! The magic dragon, live by the tree…

  47. function P=ideal_1(T,Vhat,R); • P=R*T./Vhat; • function P=ideal_2(T,Vhat); • R=0.08206; • P=R*T./Vhat; • function P=ideal_3(T,Vhat); • global R; • P=R*T./Vhat; • global R • R=0.08206; • ideal_3([300,330],20) Puff! The magic dragon, live by the tree…

  48. function P=vdwaals_1(T,Vhat,R,a,b); • P=R*T./(Vhat-b)-a./Vhat.^2; • function P=vdwaals_2(T,Vhat); • R=0.08206 • A=6.49; b=0.0562; • P=R*T./(Vhat-b)-a./Vhat.^2; • vdwaals_3(300,20) • P??????????? • P=vdwaals_3(300,20) • global a,b Puff! The magic dragon, live by the tree…

  49. applications • Finding zeros of a function • ~ roots ~ for single variable only • ~fzero(‘function’,x0)~ find out the zero for ‘function’ near x0 • ~fzero(‘function’,x0(1),xo(2))~ f(x0(1))*f(x0(2))<0 Puff! The magic dragon, live by the tree…

  50. function y=f1(x) • y=x+2*exp(-x)-3; Puff! The magic dragon, live by the tree…

More Related