"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)

═ръюэхЎ, эхяыюїю яЁютхЁшЄ№ юс∙хх ўшёыю ярЁрьхЄЁют, ё ъюЄюЁ√ьш ЇєэъЎш  с√ыр т√чтрэр. ─ы  ¤Єющ Ўхыш т ёшёЄхьх MATLAB ёяхЎшры№эю яЁхфєёьюЄЁхэр яхЁхьхээр  ё шьхэхь nargin. ┼х чэрўхэшхь  ты хЄё  ъюышўхёЄтю рЁуєьхэЄют, ЇръЄшўхёъш яхЁхфрээюх ЇєэъЎшш яЁш хх т√чютх. ╥юуфр яЁютхЁър эр ўшёыю ярЁрьхЄЁют т√яюыэ хЄё  ёыхфє■∙шь юсЁрчюь:
if nargin ~= 3
error('Bad number of parameters') end
┴юыхх Єюую, т ёшёЄхьх MATLAB яЁхфєёьюЄЁхэр яхЁхьхээр  nargout, ёюфхЁцр∙р  ўшёыю тючтЁр∙рхь√ї чэрўхэшщ т Єхъє∙хщ ЇюЁьх т√чютр ¤Єющ ЇєэъЎшш. ═ряЁшьхЁ, т√чют
[ si, s2, s3 ] = MatrProcl( xl, x2, x)
яЁхфяюырурхЄ яюыєўшЄ№ рц ЄЁш тючтЁр∙рхь√ї чэрўхэш , т Єю тЁхь  ъръ шч юяЁхфхыхэш  ЇєэъЎшш ёыхфєхЄ, ўЄю тючтЁр∙рхь√ї чэрўхэшщ є ¤Єющ ЇєэъЎшш фтр. ╫Єюс√ яЁхфюЄтЁрЄшЄ№ Єръющ ЇюЁьрЄ т√чютр ЇєэъЎшш MatrProcl ш яЁхфєяЁхфшЄ№ яюы№чютрЄхы  ЇєэъЎшш ю эхёююЄтхЄёЄтшш ўшёыр юцшфрхь√ї тючтЁр∙рхь√ї чэрўхэшщ шї эюьшэры№эюьє ўшёыє, ьюцэю т Єхых ЇєэъЎшш юёє∙хёЄтшЄ№ яЁютхЁъє яхЁхьхээющ nargout ёыхфє■∙шь юсЁрчюь:
if nargout ~= 2
error('Must be 2 return values') end
╬ёє∙хёЄтыхээ√х эрьш яЁютхЁъш яЁштюф Є ъ Єюьє, ўЄю ЇєэъЎш■ ьюцэю т√чтрЄ№ Єюы№ъю ё яЁртшы№э√ь ўшёыюь тїюфэ√ї ярЁрьхЄЁют ш тючтЁр∙рхь√ї чэрўхэшщ. ╬фэръю Ёрэхх ь√ тёЄЁхўрышё№ ёю тёЄЁюхээ√ьш ЇєэъЎш ьш ёшёЄхь√ MATLAB, ъюЄюЁ√х ьюуыш с√Є№ т√чтрэ√ ё Ёрчэ√ь ўшёыюь тїюфэ√ї ярЁрьхЄЁют (ш ¤Єю юўхэ№ Єшяшўэю). ┬ Ёхчєы№ЄрЄх ЇръЄшўхёъш Ёрчэ√х трЁшрэЄ√ ЁрсюЄ√ сышчъюую Єшяр т√яюыэ ■Єё  яюф юфэшь ш Єхь цх шьхэхь ЇєэъЎшш, ўЄю тхё№ьр эруы фэю ш єфюсэю. ╥ръютющ, эряЁшьхЁ,  ты хЄё  ЇєэъЎш  plot, шь  ъюЄюЁющ уютюЁшЄ ю яюёЄЁюхэшш уЁрЇшъют ЇєэъЎшщ. ┼ёыш с√ Ёрчэ√х трЁшрэЄ√ т√чютют ¤Єющ ЇєэъЎшш яЁш°ыюё№ с√ юёє∙хёЄты Є№ яюф Ёрчэ√ьш шьхэрьш, Єю юЄ эруы фэюёЄш эх юёЄрыюё№ с√ ш ёыхфр.
╥ръшь юсЁрчюь, ЎхыхёююсЁрчэю яЁш ЁрчЁрсюЄъх ╠-ЇєэъЎшщ фюяєёърЄ№ ьэюуютрЁшрэЄэюёЄ№ ЁрсюЄ√ яЁш Ёрчэюь ўшёых тїюфэ√ї рЁуєьхэЄют; ¤Єю эєцэю яЁхфєёьюЄЁхЄ№ яЁш яЁютхЁъх шї ўшёыр, ш тьхёЄю яЁхъЁр∙хэш  ЁрсюЄ√ ЇєэъЎшш ёыхфєхЄ ЁхрышчютрЄ№ Ёрчэ√х тхЄтш т√яюыэхэш . ╥ю цх ърёрхЄё  ш ўшёыр тючтЁр∙рхь√ї
202
├ыртр 6. ╧ЁюуЁрььшЁютрэшх ЇєэъЎшщ эр ╠- ч√ъх
чэрўхэшщ. ┬ чруюыютъх юяЁхфхыхэш  ╠-ЇєэъЎшш эєцэю яЁш ¤Єюь шёяюы№чютрЄ№ ьръёшьры№эю тючьюцэюх ўшёыю ъръ яхЁт√ї, Єръ ш тЄюЁ√ї. ╥ръ, ЇєэъЎш  TestFunc2
function [ resl, res2] = TestFunc2( varl, var2 ) switch nargin case 1
if nargout == 1, resl = varl * 2; elseif nargout == 2, resl=varl * 2; res2=varl + 3; else error('Must be 1 or 2 return values'); end case 2
if nargout == 1, resl = varl .* var2;
elseif nargout == 2, resl = varl .* var2; res2 = varl + 3; else error('Must be 1 or 2 return values'); end
otherwise error('Must be 1 or 2 parameters'); end
фюяєёърхЄ ьэюую трЁшрэЄют чрЁрэхх яЁхфєёьюЄЁхээ√ї ЇюЁьрЄют т√чютют.
─ы  ъЁрЄъюёЄш ь√ чфхё№ юяєёЄшыш яЁютхЁъє ЁрчьхЁют тїюфэ√ї ярЁрьхЄЁют, яюфЁюсэю ЁрёёьюЄЁхээє■ т√°х. ╩Ёюьх Єюую, ь√ чфхё№ эрьхЁхээю фы  сюы№°хщ эруы фэюёЄш т√яюыэ хь эхъюЄюЁє■ ыш°э■■ ЁрсюЄє: эр яЁръЄшъх ёшёЄхьр MAT-LAB ёрьюёЄю Єхы№эю юЄёыхцштрхЄ ёшЄєрЎш■ яЁхт√°хэш  ўшёыр ярЁрьхЄЁют ш тючтЁр∙рхь√ї чэрўхэшщ эрф эюьшэры№э√ь шї ўшёыюь.
┬ чръы■ўхэшх юЄьхЄшь, ўЄю ёЄхяхэ№ яюфЁюсэюёЄш яЁютхЁюъ чртшёшЄ юЄ яЁхфэрчэрўхэш  ЇєэъЎшш. ┼ёыш ╠-ЇєэъЎш  яш°хЄё  фы  ёюсёЄтхээюую яюЄЁхсыхэш , яЁютхЁъш ьюуєЄ с√Є№ ьхэхх ёЄЁюушьш, Єръ ъръ т√яюыэхэшх ╠-ЇєэъЎшщ юёє∙хёЄты хЄё  т Ёхцшьх шэЄхЁяЁхЄрЎшш яюф яюыэ√ь ъюэЄЁюыхь ёшёЄхь√ MATLAB. ╬°шсюўэ√х ёшЄєрЎшш ртЄюьрЄшўхёъш юсЁрсрЄ√тр■Єё  ёрьющ ¤Єющ ёшёЄхьющ ш т ъюьрэфэюх юъэю т√фрхЄё  ёююЄтхЄёЄтє■∙хх фшруэюёЄшўхёъюх ёююс∙хэшх.
═ю хёыш яЁхфяюырурхЄё  яхЁхфрўр ЇєэъЎшш фы  тэх°эхую яюЄЁхсыхэш , Єю яЁютхЁъш эєцэю ёфхырЄ№ сюыхх цхёЄъшьш, Єръ ъръ тэх°эхьє яюы№чютрЄхы■ ЄЁєфэю ЁрчюсЁрЄ№ё  тю тёхї фхЄры ї ЁрсюЄ√ тр°хщ ЇєэъЎшш.
╤шёЄхьр MATLAB °ЄрЄэю яюёЄрты хЄё  ё сюы№°шь ўшёыюь тёЄЁюхээ√ї ╠-ЇєэъЎшщ. ╥хъёЄ ¤Єшї ЇєэъЎшщ т√тюфшЄё  т ъюьрэфэюх юъэю ъюьрэфющ
type шь _ЇєэъЎшш
Єръ ўЄю тёхуфр ьюцэю ъръ шчєўшЄ№ фхЄрыш ЁхрышчрЎшш ЇєэъЎшхщ эхъюЄюЁюую рыуюЁшЄьр, Єръ ш эрєўшЄ№ё  Ёрчэ√ь яЁшхьрь яЁюуЁрььшЁютрэш , т ўрёЄэюёЄш ёяюёюсрь ш уыєсшэх яЁютхЁюъ тїюфэ√ї ярЁрьхЄЁют ш т√їюфэ√ї чэрўхэшщ. ╨рёёьюЄЁшь ЄхъёЄ ЇєэъЎшш repmat, ттхф  ш шёяюыэшт ъюьрэфє
type repmat
MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 203
т Ёхчєы№ЄрЄх ўхую яюыєўрхь хх яюыэ√щ ЄхъёЄ:
function ┬ = repmat(A,M,N)
%REPMAT Replicate and tile an array.
% ┬ = REPMAT(A,M,N) replicates and tiles the matrix a
% 'to produce the M-by-N block matrix B.
0 0
% ┬ = REPMAT(A,[M N]) produces the same thing.
0 0
% ┬ = REPMAT (A, [MNP ...]) tiles the array a to
% produce a M-by-N-by-P-by-... block array, a can be N-D.
%
% REPMAT(A,M,N), when a is a scalar, is commonly used to
% produce an M-by-N matrix-filled with A's value.
% This can be much faster than A*ONES(M,N)
% when M and/or N are large. Х
0 0
% Example:
% repmat(magic(2),2,3)
% repmat(NaN,2,3)
%
% See also MESHGRID.
%
% Copyright (c) 1984-98 by The MathWorks, Inc.