46
%
Ostfunksiyaga ega bo‘lgan funksiyaga misol
n = length(x);
mean = avg(x,n);
stdev = sqrt(sum((x-avg(x,n)).^2)/n);
%--------------------------------------
function m = avg(x,n)
%Ostfunksiya
m = sum(x)/n;
function [mean,stdev] = statv(x)
Ushbu misolda x vektor elementlarining o‗rtacha qiymati avg(x,n)
ostfunksiya yordamida hisoblangan
>> x=[1 2 3 4 5];
>> [a,m]=statv(x)
a =
3
m =
1.4142
>> help statv
USTATV Interesting statistics.
Ostfunksiyaga ega bo‘lgan funksiyaga misol
Ostfunksiya lokal, ya‘ni u tarkibida bo‗lgan
m-faylning ichida
ishlaydi. Faqat asosiy funksiyaga tegishli bo‗lgan izohni help name
komandasi, m-faylning to‗liq matnini esa type name komandasi chiqaradi
(name ning o‗rniga funksiyaning nomi yoziladi).
Agar funksiyada ham
ostfunksiyada ham umumiy o‗zgaruvchilar ishlatiladigan bo‗lsa ular
fuksiyada ham ostfunksiyada ham global deb e‘lon qilinishi kerak.
Argumentlarining soni o‘zgaruvchi funksiyalar
Maxsus xususiyatlarga ega bo‗lgan funksiyalarni yaratishda quyidagi
ikki funksiya foydali bo‗lishi mumkin:
nargin — berilgan funksiyadagi kirish
parametrlarining sonini
qaytaradi;
nargout — berilgan funksiyadagi chiqish parametrlarining sonini
qaytaradi.
Aytaylik, beshta xl, x2, xZ, x4 i x5
argumentlar kvadratlarining
yig‗indisini hisoblaydigan funksiya yaratish zarur bo‗lsin.
Odatdagi yo‗l bilan sum2_5 nomli funksiyani yaratamiz:
47
function f=sum2_5(x1,x2,x3,x4,x5) ;
f=x1^2+x2^2+x3^2+x4*2+x5^*2;
Uning ishlashini tekshirib ko‗ramiz:
» sum2_5(l,2.3.4.5)
ans =
55
» sum2_5(l,2)
??? Input argument 'xZ' is undefined.
Error in ==> C:\MATI_AB\bin\sum2_5.m
On line 2 ==> f=x1^2+x2^2+x3^2+x4^2+x5^2;
Shunday qilib, beshta argument bo‗lganda funksiya to‗g‗ri ishlaydi.
Lekin argumentlar soni beshtadan kam bo‗lsa xatolik to‗g‗risida axborot
beradi. Har qanday sondagi kirish argumentlari bo‗lganda (yuqoridagi
misol uchun beshtagacha) to‗g‗ri ishlaydigan
funksiyani yaratish uchun
nargin funksiyasidan foydalanamiz:
function f=sum2m_5(x1 ,x2 , xZ ,x4 , x5) ;
n=nargin;
if n==1 f=x1^2; end
if n==2 f=x1^2+x2^2;end
if n==3 f=x1^2+x2^2+x3^2; end
if n==4 f=x1^2+x2
^
2+x3^2+x4
^
2: end
if n==5 f=x1^2+x2^2+x3^2+x
Funksiyaning ishlashini tekshirib ko‗ramiz:
» sum2_5m(1)
ans =
1
» sum2_5m(1,2)
ans =
5
» sum2_5m( 1,2,3)
ans =
14
» sum2_5m(1,2,3,4)
ans =
30
» sum2_5m(1,2,3,4,5)
ans=
55
» sum2_5m(1,2,3,4,5,6)
48
??? Error using ==> sum2_5m
Too many input arguments.
Shunday qilib, kirish parametrlarining soni 1 dan 5 tagacha bo‗lganda
hisoblashlar to‗g‗ri bajariladi. Undan ortiq bo‗lsa xatolik to‗g‗risida
axborot chiqadi. Bu axborotni interpretatorga biriktirilgan xatoliklarni
diagnostika qilish tizimi beradi.
Dostları ilə paylaş: