function function AnsCalcY function AnsFuncX Y Avr And

  • Slides: 59
Download presentation

function

function

function Ans=Calc(Y)

function Ans=Calc(Y)

function Ans=Func(X, Y)

function Ans=Func(X, Y)

関数の作り方 平均と分散を求める関数 関数化する Avr. And. Var function Out=Avr. And. Var(X) 利用する EX 40104 clear

関数の作り方 平均と分散を求める関数 関数化する Avr. And. Var function Out=Avr. And. Var(X) 利用する EX 40104 clear all; % Avr. And. Var Average and Variance of a vector X N=10; %Out=[Avr Var]; Avr and Var are respectively %the average and the variance of a given vector X. X=1: N; %Data N=length(X); Y=Avr. And. Var(X) if N==0 error(‘Error: There is no data in X’); end; Avr=sum(X). /N; Var=sum(X. ^2). /N-Avr. ^2; Out=[Avr Var];

引数を操る 複数の出力引数 Avr. And. Var 4 function [Avr, Var]=Avr. And. Var 4(X) EX 40201

引数を操る 複数の出力引数 Avr. And. Var 4 function [Avr, Var]=Avr. And. Var 4(X) EX 40201 clear all; % Avr. And. Var Average and Variance of a vector X N=10; %Out=[Avr Var]; Avr and Var are respectively %the average and the variance of a given vector X. X=1: N; %Data [Avr, Var]=… N=length(X); if N==0 Avr. And. Var 4(X) error(‘Error: There is no data in X’); end; Avr=sum(X). /N; Var=sum(X. ^2). /N-Avr. ^2;

引数を操る 複数の出力引数 関数を利用するときには,複数の引数 Avr. And. Var 4 function [Avr, Var]=Avr. And. Var 4(X) があるので,それぞれ異なる変数に入

引数を操る 複数の出力引数 関数を利用するときには,複数の引数 Avr. And. Var 4 function [Avr, Var]=Avr. And. Var 4(X) があるので,それぞれ異なる変数に入 るように,複数の変数を指定する EX 40104 clear all; % Avr. And. Var Average and Variance of a vector X N=10; %Out=[Avr Var]; Avr and Var are respectively 関数の出力が複数ある場合には[ ]で 括り,各引数を「,」で区切る %the average and the variance of a given vector X. X=1: N; %Data [Avr, Var]=… N=length(X); if N==0 Avr. And. Var 4(X) error(‘Error: There is no data in X’); end; Avr=sum(X). /N; Var=sum(X. ^2). /N-Avr. ^2; 関数本体の中で,出力引数に指定した 変数の値を決定する

引数を操る 出力引数がないとき Avr. And. Var 5 function Avr. And. Var 5(X) % Avr. And.

引数を操る 出力引数がないとき Avr. And. Var 5 function Avr. And. Var 5(X) % Avr. And. Var 5 Average and Variance of a vector X %Display Avr and Var of a given vector X % N=length(X); if N==0 error(‘Error: There is no data in X’); end; Avr=sum(X). /N; Var=sum(X. ^2). /N-Avr. ^2; S=sprintf(‘Avrage=%6. 3 f. Variance=%6. 3 f’, … Avr, Var); disp(S); EX 40202 clear all; N=10; X=1: N; %Data Avr. And. Var 5(X)

引数を操る 出力引数がないとき Avr. And. Var 5 function Avr. And. Var 5(X) % Avr. And.

引数を操る 出力引数がないとき Avr. And. Var 5 function Avr. And. Var 5(X) % Avr. And. Var 5 Average and Variance of a vector X %Display Avr and Var of a given vector X 出力引数がないたいきなり関数名から % 始まっている N=length(X); if N==0 計算した結果を「画面」に出力している error(‘Error: There is no data in X’); end; C言語のprintfに似ているが,これは画面に Avr=sum(X). /N; 出力するためではなく,文字列を作るため Var=sum(X. ^2). /N-Avr. ^2; S=sprintf(‘Avrage=%6. 3 f. Variance=%6. 3 f’, … Avr, Var); disp関数を使うことで初めて画面に出力される. disp(S); EX 40202 clear all; N=10; X=1: N; %Data Avr. And. Var 5(X) sprintfとdispを組み合わせるとC言語のprintfと同じ

引数を操る 入力引数がないとき Avr. And. Var 6 function [Avr, Var]=Avr. And. Var 6 %Avr and

引数を操る 入力引数がないとき Avr. And. Var 6 function [Avr, Var]=Avr. And. Var 6 %Avr and Var are respectively the average %and the variance of a generated vector X N=10; X=1: N; Avr=sum(X). /N; Var=sum(X. ^2). /N-Avr. ^2; EX 40203 clear all; [Avr, Var]=… Avr. And. Var 6; Avr, Var

引数を操る 出力引数も入力引数もないとき Avr. And. Var 7 EX 40204 function Avr. And. Var 7 clear

引数を操る 出力引数も入力引数もないとき Avr. And. Var 7 EX 40204 function Avr. And. Var 7 clear all; % function Avr. And. Var 7; %Display Average and Variance of a %generated vector X. N=10; X=1: N; Avr=sum(X). /N; Var=sum(X. ^2). /N-Avr. ^2; S=sprintf(‘Average=%6. 3 f Variance=%6. 3 f’, . . . Avr, Var); disp(S);

引数を操る 出力引数も入力引数もないとき Avr. And. Var 8 function Avr. And. Var 8 % function Avr.

引数を操る 出力引数も入力引数もないとき Avr. And. Var 8 function Avr. And. Var 8 % function Avr. And. Var 8 Average, Variance %Calculate AVR and VAR of a given X %Noticet than X, AVR and VAR are global variable global X AVR VAR N=length(X); AVR=sum(X). /N; VAR=sum(X. ^2). /N-AVR. ^2; EX 40205 clear all; global X VAR N=10; X=1: N; Avr. And. Var 8; AVR, VAR

引数を操る 出力引数も入力引数もないとき(2) Avr. And. Var 8 function Avr. And. Var 8 % function Avr.

引数を操る 出力引数も入力引数もないとき(2) Avr. And. Var 8 function Avr. And. Var 8 % function Avr. And. Var 8 Average, Variance 1行目:関数定義行 global変数の宣言 %Calculate AVR and VAR of a given X functionから必ず始まる 通常大文字で書く %Noticet than X, AVR and VAR are global variable global X AVR VAR N=length(X); AVR=sum(X). /N; VAR=sum(X. ^2). /N-AVR. ^2; EX 40205 clear all; global X VAR N=10; X=1: N; Avr. And. Var 8; AVR, VAR

引数を操る 出力引数も入力引数もないとき(3) Avr. And. Var 8 function Avr. And. Var 8 % function Avr.

引数を操る 出力引数も入力引数もないとき(3) Avr. And. Var 8 function Avr. And. Var 8 % function Avr. And. Var 8 Average, Variance %Calculate AVR and VAR of a given X %Noticet than X, AVR and VAR are global variable global X %AVR VAR N=length(X); AVR=sum(X). /N; VAR=sum(X. ^2). /N-AVR. ^2; EX 40206 clear all; global X VAR N=10; X=1: N; Avr. And. Var 8; AVR, VAR

引数を操る 出力引数も入力引数もないとき(4) Avr. And. Var 8 function Avr. And. Var 8 % function Avr.

引数を操る 出力引数も入力引数もないとき(4) Avr. And. Var 8 function Avr. And. Var 8 % function Avr. And. Var 8 Average, Variance %Calculate AVR and VAR of a given X %Noticet than X, AVR and VAR are global variable global X AVR %VAR N=length(X); AVR=sum(X). /N; VAR=sum(X. ^2). /N-AVR. ^2; EX 40206 clear all; global X VAR N=10; X=1: N; Avr. And. Var 8; AVR, VAR

引数を操る 入力引数が1つか2つどちらかわからないとき Avr. And. Var 9 function [Avr, Var]=Avr. And. Var 9(X, Y) %

引数を操る 入力引数が1つか2つどちらかわからないとき Avr. And. Var 9 function [Avr, Var]=Avr. And. Var 9(X, Y) % Avr. And. Var 9 Average, Variance of X or [X, Y] %Avr and Var are respectively the average and % the variable of a given X or [X Y]. if nargin==1 N=length(X); Z=X; else N=length(X)+length(Y); Z=[X Y]; end Avr=sum(Z). /N; Var=sum(Z. ^2). /N-Avr. ^2; EX 40206 clear all; N=10; X=1: N; Y=2. *X; [Avr Var]=… Avr. And. Var 9(X); Avr, Var [Avr Var]=… Avr. And. Var 9(X, Y); Avr, Var

引数を操る 入力引数が1つか2つどちらかわからないとき(2) Avr. And. Var 9 narginは与えられた引数の数 function [Avr, Var]=Avr. And. Var 9(X, Y)

引数を操る 入力引数が1つか2つどちらかわからないとき(2) Avr. And. Var 9 narginは与えられた引数の数 function [Avr, Var]=Avr. And. Var 9(X, Y) % Avr. And. Var 9 Average, Variance of X or [X, Y] 1の場合は,引数が1つだけ与 %Avr and Var are respectively the average and えられたということ. % the variable of a given X or [X Y]. if nargin==1 N=length(X); Z=X; else N=length(X)+length(Y); Z=[X Y]; end Avr=sum(Z). /N; 2つの場合は Var=sum(Z. ^2). /N-Avr. ^2; ZをXとYをつなげたものにする. EX 40206 clear all; N=10; X=1: N; Y=2. *X; [Avr Var]=… Avr. And. Var 9(X); Avr, Var [Avr Var]=… Avr. And. Var 9(X, Y); Avr, Var

引数を操る 入力引数が何個あるのかわからないとき Avr. And. Var 10 function [Avr, Var]=Avr. And. Var 10(varargin) % Avr.

引数を操る 入力引数が何個あるのかわからないとき Avr. And. Var 10 function [Avr, Var]=Avr. And. Var 10(varargin) % Avr. And. Var 10 Average, Variance of X 1, X 2, … %Avr and Var are respectively the average and % the variable of given vectors X 1, X 2, … Z=[ ]; for I=1: length(varargin); Z=[Z varargin{I}]; end N=length(Z); Avr=sum(Z). /N; Var=sum(Z. ^2). /N-Avr. ^2; EX 40207 clear all; N=10; X=1: N; Y=2. *X; Z=3. *X; [Avr Var]=… Avr. And. Var 10(X); Avr, Var [Avr Var]=… Avr. And. Var 10(X, Y, Z); Avr, Var

引数を操る 入力引数が何個あるのかわからないとき 入力引数の数がわからない Avr. And. Var 10 ときは”varargin”とする function [Avr, Var]=Avr. And. Var 10(varargin)

引数を操る 入力引数が何個あるのかわからないとき 入力引数の数がわからない Avr. And. Var 10 ときは”varargin”とする function [Avr, Var]=Avr. And. Var 10(varargin) % Avr. And. Var 10 Average, Variance of X 1, X 2, … %Avr and Var are respectively the average and 入力変数の数を確認する % the variable of given vectors X 1, X 2, … Z=[ ]; for I=1: length(varargin); Z=[Z varargin{I}]; end セル行列 N=length(Z); { }であることに注意 Avr=sum(Z). /N; Zに次々に新しいベク トルを追加していく Var=sum(Z. ^2). /N-Avr. ^2; EX 40207 clear all; N=10; X=1: N; Y=2. *X; Z=3. *X; [Avr Var]=… Avr. And. Var 10(X); Avr, Var [Avr Var]=… Avr. And. Var 10(X, Y, Z); Avr, Var

引数を操る 入力引数が何個あるのかわからないとき Avr. And. Var 10 function [Avr, Var]=Avr. And. Var 10(varargin) % Avr.

引数を操る 入力引数が何個あるのかわからないとき Avr. And. Var 10 function [Avr, Var]=Avr. And. Var 10(varargin) % Avr. And. Var 10 Average, Variance of X 1, X 2, … %Avr and Var are respectively the average and % the variable of given vectors X 1, X 2, … これで確認してみよう varargin{I}がどうなっているのか Z=[ ]; 確認できる for I=1: length(varargin); varagin{I} Z=[Z varargin{I}] end N=length(Z); Avr=sum(Z). /N; Var=sum(Z. ^2). /N-Avr. ^2; EX 40207 clear all; N=10; X=1: N; Y=2. *X; Z=3. *X; [Avr Var]=… Avr. And. Var 10(X); Avr, Var [Avr Var]=… Avr. And. Var 10(X, Y, Z); Avr, Var

引数を操る コマンドのように使う Sum. And. Prod function Y=Sum. And. Prod(S) % Sum. And. Prod Sum

引数を操る コマンドのように使う Sum. And. Prod function Y=Sum. And. Prod(S) % Sum. And. Prod Sum and Product %if S=‘sum’ then Sum. And. Prod(S) gives 1+…+100 %if S=‘prod’ then Sum. And. Prod(S) gives 1*…*100. %otherwise Sum. And. Prod(S) gives 0. if strcmp(S, ’sum’) Y=sum(1: 100); elseif strcmp(S, ’prod’) Y=prod(1: 100); else Y=0; end EX 40208 clear all: Sum. And. Prod(‘sum’) Sum. And. Prod(‘prod’) Sum. And. Prod(‘Sum’) Sum. And. Prod(‘Prod’)

引数を操る コマンドのように使う Sum. And. Prod function Y=Sum. And. Prod(S) strcmp(A, B) %はAとBの文字列が一致かどうか Sum. And.

引数を操る コマンドのように使う Sum. And. Prod function Y=Sum. And. Prod(S) strcmp(A, B) %はAとBの文字列が一致かどうか Sum. And. Prod Sum and Product %if S=‘sum’ then Sum. And. Prod(S) gives 1+…+100 判断 一致=1,不一致=0 %if S=‘prod’ then Sum. And. Prod(S) gives 1*…*100. %otherwise Sum. And. Prod(S) gives 0. 文字列変数は’’で囲む if strcmp(S, ’sum’) Y=sum(1: 100); elseif strcmp(S, ’prod’) Y=prod(1: 100); if strcmp(S, ’sum’) else は if. Y=0; strcmp(S, ’sum’)==1 と同じ意味 end EX 40208 clear all: Sum. And. Prod(‘sum’) Sum. And. Prod(‘prod’) Sum. And. Prod(‘Sum’) Sum. And. Prod(‘Prod’)

function [A, B]=Aand. B

function [A, B]=Aand. B

function Display(A, B, C)

function Display(A, B, C)

nargin

nargin

function Func 1(varargin)

function Func 1(varargin)

length(varargin)

length(varargin)

varargin{L}

varargin{L}