610 likes | 802 Vues
第 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 ’
E N D
第3章 檔案、函數、資料結構files, functions, and data structures Puff! The magic dragon, live by the tree…
Why use ‘files’? • 多行指令 or 日後重複使用 Puff! The magic dragon, live by the tree…
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…
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…
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…
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…
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…
The import wizard • importing data • exporting data Puff! The magic dragon, live by the tree…
Importing ASCII data • P.129 attentions! • Data type: numeric? Text? Or in mixed type! Puff! The magic dragon, live by the tree…
Import ASCII data files with text headers • P.130-131 Puff! The magic dragon, live by the tree…
Importing mixed text and numeric ASCII data • P.131-132 Puff! The magic dragon, live by the tree…
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…
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…
Example (p.134-135) Puff! The magic dragon, live by the tree…
?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…
?format rat • ?a • a = • 3/7 • ?format bank • ?a • a = • 0.43 Puff! The magic dragon, live by the tree…
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…
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…
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…
Exponential & logarithmic functions • ?x=9; • ?y=sqrt(x); • ?x,y • x = • 9 • y = • 3 Puff! The magic dragon, live by the tree…
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…
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…
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…
?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…
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…
?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…
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…
?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…
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…
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…
Hyperbolic functions Puff! The magic dragon, live by the tree…
Self testing • P.143 • Use ur calculator now • Use ur computer after this class Puff! The magic dragon, live by the tree…
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…
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…
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…
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…
Global variables • Common used variables! • See p.147-149 for detail description Puff! The magic dragon, live by the tree…
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…
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…
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…
function y=f1(x) • y=x+2*exp(-x)-3; Puff! The magic dragon, live by the tree…