"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)┬ ╠- ч√ъх ёшёЄхь√ MATLAB Єрър тючьюцэюёЄ№ срчшЁєхЄё эр шёяюы№чютрэшш ьрёёштр ўххъ. ┬ юяЁхфхыхэшш ╠-ЇєэъЎшш ярЁрьхЄЁ, ўхЁхч ъюЄюЁ√щ яхЁхфрхЄё чрЁрэхх эхшчтхёЄэюх ўшёыю тїюфэ√ї рЁуєьхэЄют, эєцэю юсючэрўшЄ№ ъы■ўхт√ь ёыютюь varargin. ╥ръшь ъы■ўхт√ь ёыютюь юсючэрўрхЄё ьрёёшт ўххъ, т ъюЄюЁ√щ єяръютрэ√ ¤Єш ярЁрьхЄЁ√. ╘єэъЎш тёхуфр ьюцхЄ єчэрЄ№ шёЄшээюх ўшёыю рЁуєьхэЄют, єяръютрээ√ї т ярЁрьхЄЁх varargin, яЁшьхэшт фы ¤Єюую ЇєэъЎш■ length.
═шцх яЁхфёЄртыхэ ъюф ЇєэъЎшш, т√ўшёы ■∙хщ ёєььє ътрфЁрЄют фышэ яЁюшчтюы№эюую ъюышўхёЄтр тхъЄюЁ-ёЄЁюъ: function SumLen = NuraLength( varargin ) n = length( varargin ); SumLen = 0; for k = 1 : n SumLen = SumLen+varargin{k}(1)A2+varargin{k}(2)A2; end ┼ёыш рЁуєьхэЄ varargin эх хфшэёЄтхээ√щ т ёяшёъх ярЁрьхЄЁют, Єю юэ фюыцхэ ёЄю Є№ яюёыхфэшь. ┬ ЁрёёьюЄЁхээюь яЁшьхЁх ё яюью∙№■ ЇшуєЁэ√ї ёъюсюъ ь√ шчтыхърхь ёюфхЁцшьюх юЄфхы№эющ ўхщъш, Єю хёЄ№ тхъЄюЁ, р ё яюью∙№■ фры№эхщ°хщ шэфхъёрЎшш ъЁєуы√ьш ёъюсърьш шчтыхърхь яхЁтє■ ш тЄюЁє■ ъююЁфшэрЄ√ тхъЄюЁр. ╧Ёш т√чютх ЇєэъЎшш NumLength эх эєцэю (ш эхы№ч ) єяръют√трЄ№ тїюфэ√х ўшёыют√х тхъЄюЁ-ёЄЁюъш т ьрёёшт ўххъ, Єръ ъръ MATLAB фхырхЄ ¤Єю ёрь. ─юёЄрЄюўэю яхЁхўшёышЄ№ шї т ърўхёЄтх ЇръЄшўхёъшї ярЁрьхЄЁют ўхЁхч чря Єє■: NumLength( [12], [34] ) ans = 30 ╥хяхЁ№ т√чютхь ЇєэъЎш■ NumLength ё фЁєушь ўшёыюь ярЁрьхЄЁют: NumLength( [12], [34], [56] ) ans = 91 MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 199 ╘єэъЎш ыхуъю юсЁрсрЄ√трхЄ юср ¤Єшї ёыєўр , яЁртшы№эю т√ўшёы ёєььрЁэє■ фышэє тїюфэ√ї тхъЄюЁют. ┬ юяЁхфхыхэшш ╠-ЇєэъЎшш яхЁхьхээюх ўшёыю тючтЁр∙рхь√ї чэрўхэшщ єяръют√трхЄё т ьрёёшт ўххъ, юсючэрўрхь√щ ъы■ўхт√ь ёыютюь varargout: function varargout = MyFunc3( X ) ╟фхё№ т ьрёёшт ўххъ ё шьхэхь varargout ьюцэю т Єхых ЇєэъЎшш єяръютрЄ№ яЁюшчтюы№эюх ўшёыю т√їюфэ√ї чэрўхэшщ. ─юяєёЄшь, ўЄю эр тїюф ЇєэъЎшш MyFunc3 ьюцхЄ яюфртрЄ№ё т ърўхёЄтх хфшэёЄтхээюую тїюфэюую ярЁрьхЄЁр ьрёёшт Ёрчэ√ї ЁрчьхЁэюёЄхщ ш ЁрчьхЁют. ╠√ їюЄшь тючтЁр∙рЄ№ эхёъюы№ъю ёъры Ёют, ърцф√щ шч ъюЄюЁ√ї ты хЄё ЁрчьхЁюь тїюфэюую ьрёёштр тфюы№ юфэюую шч хую шчьхЁхэшщ. ╥ръ ъръ ъюышўхёЄтю шчьхЁхэшщ чрЁрэхх эхшчтхёЄэю, Єю хую ьюцэю юяЁхфхышЄ№ т Єхых ЇєэъЎшш фшэрьшўхёъш ш эр їюфє єяръютрЄ№ тёх ¤Єш ёъры Ё√ т хфшэёЄтхээє■ т√їюфэє■ яхЁхьхээє■ varargout. ┬юЄ Ёх°хэшх ¤Єющ чрфрўш: function varargout = MyFunc3( X ) n = ndims( X ); for i = 1 : n varargout(i) = {size(X,i)}; end ╟фхё№ ЇєэъЎш size (X, i) т√ўшёы хЄ ЁрчьхЁ ьрёёштр X тфюы№ i-ую эряЁртыхэш (шчьхЁхэш ). ═шцх яюърчрэ√ фтр яЁшьхЁр шёяюы№чютрэш ¤Єющ ЇєэъЎшш: └=[12 3;4 5 6]; [ m, n ] = MyFunc3 ( р ); ╟фхё№ ёъры Ё√ Єшя яЁшьєЄ ёююЄтхЄёЄтхээю чэрўхэш 2 ш 3. └ ЄхяхЁ№ ёЇюЁьшЁєхь ЄЁхїьхЁэ√щ ьрёёшт ╤ ш т√чютхь фы эхую ЇєэъЎш■ MyFunc3: ┬ = [ 4 5 6; 9 8 7]; ╤(:,:,1) = └; ╤(:,:,2) = ┬; [m,n,k]= MyFunc3( ╤ ); [m,n]= MyFunc3( ╤ ); ъюЄюЁ√щ ты хЄё рсёюы■Єэю ъюЁЁхъЄэ√ь ё Єюўъш чЁхэш ёшэЄръёшёр ╠- ч√ър, эю яЁш ъюЄюЁюь ЄЁхЄ№х т√ЁрсрЄ√трхьюх ЇєэъЎшхщ MyFunc3 т√їюфэюх чэрўхэшх ЄхЁ хЄё . 200 ├ыртр 6. ╧ЁюуЁрььшЁютрэшх ЇєэъЎшщ эр ╠- ч√ъх I I ╩юэЄЁюы№ тїюфэ√ї ярЁрьхЄЁют ш т√їюфэ√ї чэрўхэшщ ╠-Їєэъшшш ═хёютярфхэшх Єшяют ш ўшёыр ЇръЄшўхёъшї (ё ъюЄюЁ√ьш Ёхры№эю т√ч√трхЄё ЇєэъЎш ) ш ЇюЁьры№э√ї ярЁрьхЄЁют яЁштюфшЄ ъ эхяЁртшы№эющ ЁрсюЄх ╠-ЇєэъЎшщ. ═ю ляюы№чютрЄхы№╗ ╠-ЇєэъЎшш (¤Єю ьюцхЄ с√Є№ ъръ фЁєур ЇєэъЎш , Єръ ш ўхыютхъ) тёхуфр ьюцхЄ ю°шсшЄ№ё яЁш хх т√чютх. ╧ю¤Єюьє цхырЄхы№эю тёЄЁрштрЄ№ тэєЄЁ№ ъюфр ╠-ЇєэъЎшщ яЁютхЁъє Єшяр ш ъюышўхёЄтр тїюфэ√ї ярЁрьхЄЁют, р Єръцх ъюышўхёЄтр т√їюфэ√ї чэрўхэшщ, т ъюЄюЁ√х лт√ч√тр■∙р ёЄюЁюэр╗ я√ЄрхЄё яюьхёЄшЄ№ Ёхчєы№ЄрЄ√ ЁрсюЄ√ ЇєэъЎшш. ╨рёёьюЄЁшь яЁюсыхьє эр яЁшьхЁх єърчрээющ т√°х ЇєэъЎшш MatrProcl. ▌Єр ЇєэъЎш яЁхфяюырурыр шёяюы№чютрЄ№ т ърўхёЄтх яхЁтюую ш тЄюЁюую рЁуєьхэЄют ьрёёшт√ юфшэръют√ї ЁрчьхЁют. ┼ёыш яюы№чютрЄхы№ яю ю°шсъх чрфрёЄ ЇръЄшўхёъшх ярЁрьхЄЁ√ т тшфх ьрёёштют Ёрчэ√ї ЁрчьхЁют, Єю т яЁюЎхёёх т√яюыэхэш ЇєэъЎшш тючэшъэхЄ ю°шсър. ╫Єюс√ шчсхцрЄ№ ¤Єюую, ьюцэю т Єхых ЇєэъЎшш MatrProcl юЁурэшчютрЄ№ яЁютхЁъє ЁрчьхЁют яхЁтюую ш тЄюЁюую ярЁрьхЄЁют: function [ └, ┬ ] = MatrProcl( XI, ╒2, ї ) nl = ndims(Xl); n2 = ndims(X2); %Ч parameters control ------------------------------------------- if nl ~= n2 error('Different dimensions') else for i=l:nl if size(Xl,i)~=size(X2,i) error('Different sizes of 1st and 2nd parameters') end end end %Ч calculations -------------------------------- A = XI .* X2 * x; ┬ = XI .* X2 + x; ╥хяхЁ№ яЁш т√чютх ЇєэъЎшш MatrProcl ё эхяЁртшы№э√ьш ЁрчьхЁрьш яхЁтюую ш тЄюЁюую рЁуєьхэЄют ёЄрэфрЁЄэр ЇєэъЎш ёшёЄхь√ MATLAB error сєфхЄ ъюЁЁхъЄэю юёЄрэртыштрЄ№ тё■ ЁрсюЄє ш т√тюфшЄ№ т ъюьрэфэюх юъэю ёшёЄхь√ MATLAB эр°ш фшруэюёЄшўхёъшх ёююс∙хэш (рЁуєьхэЄ√ ЇєэъЎшш error), яюёых ўхую яюы№чютрЄхы■ юёЄрэхЄё ыш°№ яютЄюЁэю т√чтрЄ№ ЇєэъЎш■ MatrProcl, эю єцх ё яЁртшы№э√ьш ярЁрьхЄЁрьш. ─ы сюы№°хщ эрфхцэюёЄш эєцэю х∙х фюсртшЄ№ яЁютхЁъє ЄЁхЄ№хую ярЁрьхЄЁр эр ёъры ЁэюёЄ№ (т ёшёЄхьх MATLAB ёъры Ё√ ты ■Єё ьрЄЁшЎрьш 1x1), ўЄю ьюцэю т√яюыэшЄ№ ёыхфє■∙шь ЇЁруьхэЄюь ъюфр: MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 201 [ m ,n ] = size ( x ); if ( m ~= 1 | n ~= 1 ) error('3-d parameter must be scalar') end |
|
© 2025 Библиотека RealLib.org
(support [a t] reallib.org) |