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

┼ёыш фтр ьрёёштр ёЄЁєъЄєЁ шьх■Є юфшэръют√щ эрсюЁ яюыхщ, Єю фюяєёърхЄё  уЁєяяютюх яЁшётрштрэшх тшфр
MyStructl( 3 ) = AnotherStruct( 2 );
ъюуфр чэрўхэш  тёхї яюыхщ тЄюЁюую ¤ыхьхэЄр ьрёёштр AnotherStruct ъюяшЁє■Єё  т яюы  ЄЁхЄ№хую ¤ыхьхэЄр ьрёёштр MyStructl.
┼ёыш ЁрсюЄр тхфхЄё  т шэЄхЁръЄштэюь Ёхцшьх, ъюуфр тёх фрээ√х ттюф Єё  ё ъыртшрЄєЁ√, ЁрёёьюЄЁхээ√щ яЁюЎхёё яюёыхфютрЄхы№эюую чрфрэш  яюыхщ ш ¤ыхьхэЄют ьрёёштр ёЄЁєъЄєЁ тяюыэх юяЁртфрэ. ╬фэръю т яЁюуЁрььэюь Ёхцшьх юэ эхфюёЄрЄюўэю їюЁю° ё Єюўъш чЁхэш  яЁюшчтюфшЄхы№эюёЄш. ┬ьхёЄю эхую ыєў°х шёяюы№чютрЄ№ ЇєэъЎш■ ё шьхэхь struct:
MyStruct2 = struct( 'fieldl', [ 1 2 3]/field?'/Hello') ; MyStruct2(2)=struct('fieldl',[ 7 8 9] / field2' /World') ;
╧юърцхь ЄхяхЁ№ (їюЄ  ¤Єю ш юўхтшфэю), ъръ яюфюсЁрЄ№ё  ъ хфшэёЄтхээюьє ўшёыютюьє чэрўхэш■ т яюых data яхЁтюую ¤ыхьхэЄр ьрёёштр MyStructl. ─ы  ¤Єюую
100 ├ыртр 3. ╠рёёшт√ ёшьтюыют, ёЄЁєъЄєЁ,  ўххъ. ╘рщыют√х юяхЁрЎшш
эрфю яЁшьхэшЄ№ фтх юяхЁрЎшш шэфхъёрЎшш ш юфэє юяхЁрЎш■ фюёЄєяр ъ яюы■ ёЄЁєъЄєЁ√. ═ряЁшьхЁ, фы  Ёрэхх ёючфрээюую эрьш ьрёёштр ёЄЁєъЄєЁ MyStructl т√Ёрцхэшх
MyStructl( 1 ).data( 1,2)
шьххЄ чэрўхэшх 2.5, Єръ ъръ т яюых data Ёрёяюыюцхэ√ ўшёыют√х ьрЄЁшЎ√ 2x2 ш ёююЄтхЄёЄтє■∙шщ ¤ыхьхэЄ ўшёыютющ ьрЄЁшЎ√ фхщёЄтшЄхы№эю Ёртхэ 2.5.
╥хяхЁ№ ЁрёёьюЄЁшь сюыхх ёыюцэ√щ тюяЁюё юс юфэютЁхьхээюь фюёЄєях ъ ёюфхЁцшьюьє юфэюшьхээ√ї яюыхщ тёхї ¤ыхьхэЄют эхъюЄюЁюую ьрёёштр ёЄЁєъЄєЁ. ╧єёЄ№, ъ яЁшьхЁє, ЄЁхсєхЄё  ёъюяшЁютрЄ№ ш ёюїЁрэшЄ№ т яхЁхьхээющ v юс·хфшэхээюх ёюфхЁцшьюх яюыхщ data тёхї ¤ыхьхэЄют ёючфрээюую т√°х ьрёёштр ёЄЁєъЄєЁ MyStructl. ┬юЄ ъюьяръЄэюх Ёх°хэшх ¤Єющ чрфрўш, яЁхфырурхьюх ёшёЄхьющ MATLAB:
v = [ MyStructl.data ] ans =
1.0000 2.5000 -5.7000 -2.5000
-7.8000 2.3000 7.1000 8.4000
╟фхё№ яЁшьхэхэшх яЁ ьюєуюы№э√ї ёъюсюъ юс чрЄхы№эю, Єръ ъръ т ╠- ч√ъх т√Ёрцхэшх
MyStructl.data ¤ътштрыхэЄэю ёыхфє■∙хьє ёяшёъє тхышўшэ, Ёрчфхыхээ√ї чря Є√ьш:
MyStructl(I).data, MyStructl(2).data
┼ёыш чръы■ўшЄ№ Єръющ ёяшёюъ т яЁ ьюєуюы№э√х ёъюсъш, Єю яюыєўрхЄё  ёшэЄръёшўхёъш ъюЁЁхъЄэюх т√Ёрцхэшх фы  уюЁшчюэЄры№эющ ъюэърЄхэрЎшш фтєї ўшёыют√ї ьрЄЁшЎ 2 ї 2. ┬ Ёхчєы№ЄрЄх Єръющ юяхЁрЎшш яхЁхьхээр  v ёЄрэютшЄё  ўшёыютющ ьрЄЁшЎхщ 2 ї 4.
─ы  єфрыхэш  эхъюЄюЁюую яюы  шч тёхї ¤ыхьхэЄют ёючфрээюую ьрёёштр ёЄЁєъЄєЁ яЁшьхэ ■Є ЇєэъЎш■ rmf ield:
MyStruct2=rmfield(MyStruct2,'field2') ;
╧юёых ¤Єюую т ьрёёштх ёЄЁєъЄєЁ MyStruct2, ёючфрээюь эрьш Ёрэхх (ёь. т√°х), юёЄрхЄё  Єюы№ъю яюых f ieldl.
┬ ърўхёЄтх ёюфхЁцшьюую эхъюЄюЁюую яюы  ёЄЁєъЄєЁ√ ьюцхЄ т√ёЄєярЄ№ фЁєур  ёЄЁєъЄєЁр, Єю хёЄ№ ёЄЁєъЄєЁ√ ьюуєЄ с√Є№ тыюцхээ√ьш. ┬ ърўхёЄтх шьхэш тыюцхээющ ёЄЁєъЄєЁ√ т√ёЄєярхЄ шь  яюы  юс·хьы■∙хщ ёЄЁєъЄєЁ√:
Outer.number = 1;
Outer.inner.name='namel';
Outer.inner.data=[ 5 3; 7 8];
MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх
101
╟фхё№ Outer- шь  тэх°эхщ (юс·хьы■∙хщ) ёЄЁєъЄєЁ√, a inner- шь  тэєЄЁхээхщ ёЄЁєъЄєЁ√,  ты ■∙хщё  яюыхь ёЄЁєъЄєЁ√ Outer. ─ы  ўЄхэш  ўшёыютюую фрээюую, ёЄю ∙хую тю тЄюЁющ ёЄЁюъх яхЁтюую ёЄюысЎр т яюых data, эєцэю яЁшьхэшЄ№ т√Ёрцхэшх ё фтєь  Єюўърьш, уфх яхЁтр  Єюўър ючэрўрхЄ фюёЄєя ъ яюы■ inner,  ты ■∙хьєё  ёЄЁєъЄєЁющ, р тЄюЁр  Єюўър юёє∙хёЄты хЄ фюёЄєя ъ яюы■ data ¤Єющ тэєЄЁхээхщ ёЄЁєъЄєЁ√:
Outer.inner.data( 2, 1 ) ans = 7
╬ Єюь, ъръ єёЄЁюхэ√ ёЄЁєъЄєЁ√ Outer ш inner, ёшёЄхьр MATLAB ёююс∙рхЄ Єръ, ъръ яюърчрэю эр Ёшё. 3.5.
Хi MATLAB Command Window
File Edit Window
Help
╗ Outer Outer =
mmiber: 1 inner: [lxl struct]
╗ Outer, inner
ans =
name: 'name├ data: [2x2 double]
╨шёєэюъ 3.5
╠рёёшт√ ёЄЁєъЄєЁ, ъръ ь√ тшфхыш т√°х, ьюуєЄ фшэрьшўхёъш шчьхэ Є№ ёюёЄрт ётюшї яюыхщ. ┬ ы■сющ ьюьхэЄ, юфэръю, ьюцэю ё яюью∙№■ ёяхЎшры№э√ї ЇєэъЎшщ яЁютхЁшЄ№, шч ъръшї яюыхщ ёюёЄюшЄ ёЄЁєъЄєЁр. ┬юЄ ёяшёюъ ¤Єшї ЇєэъЎшщ:
isstruct ( St ) - тючтЁр∙рхЄ шёЄшэє, хёыш рЁуєьхэЄ ёЄЁєъЄєЁр. isfield( St, 'name' )- тючтЁр∙рхЄ шёЄшэє, хёыш шьххЄё  Єръюх яюых. fieldnames ( St )-тючтЁр∙рхЄ ьрёёшт ёЄЁюъ ё шьхэрьш тёхї яюыхщ.
╤ЄЁєъЄєЁ√ MATLAB ьюцэю эрчтрЄ№ руЁхушЁютрээ√ь Єшяюь фрээ√ї. ─Ёєушь руЁхушЁютрээ√ь Єшяюь фрээ√ї т ёшёЄхьх MATLAB  ты ■Єё  Єръ эрч√трхь√х  ўхщъш (cells). ╥юы№ъю ўЄю єяюь эєЄр  ЇєэъЎш  fieldnames тючтЁр∙рхЄ ьрёёшт
1
102 ├ыртр 3. ╠рёёшт√ ёшьтюыют, ёЄЁєъЄєЁ,  ўххъ. ╘рщыют√х юяхЁрЎшш
(эрсюЁ) ёЄЁюъ шьхээю т тшфх ьрёёштр  ўххъ, Єръ ўЄю ёрьюх тЁхь  яЁшёЄєяшЄ№ ъ шчєўхэш■ ¤Єюую Єшяр фрээ√ї.
╠рёёшт√  ўххъ
╠рёёшт  ўххъ (cell array) ёюфхЁцшЄ т ърўхёЄтх ётюшї ¤ыхьхэЄют ьрёёшт√ Ёрчэ√ї Єшяют. ╠юцэю ёърчрЄ№, ўЄю ьрёёшт  ўххъ  ты хЄё  ьрёёштюь ьрёёштют. ╧ю ёєЄш юэ  ты хЄё  єэштхЁёры№э√ь ъюэЄхщэхЁюь - хую  ўхщъш (¤ыхьхэЄ√) ьюуєЄ ёюфхЁцрЄ№ ы■с√х Єшя√ ш ёЄЁєъЄєЁ√ фрээ√ї, ё ъюЄюЁ√ьш ЁрсюЄрхЄ MATLAB, -ўшёыют√х ьрёёшт√ ы■сющ ЁрчьхЁэюёЄш, ьрёёшт√ Єшяр uint8, ёЄЁюъш, ьрёёшт√ ёЄЁєъЄєЁ ш, эръюэхЎ, тыюцхээ√х ьрёёшт√  ўххъ. ┬ ётю■ юўхЁхф№, ьрёёшт  ўххъ ьюцхЄ с√Є№ яюыхь ёЄЁєъЄєЁ√.
╠хЄюф√ ёючфрэш  ьрёёштют  ўххъ яюїюцш эр ьхЄюф√ ёючфрэш  ёЄЁєъЄєЁ. ╩ръ ш т ёыєўрх ёЄЁєъЄєЁ, ьрёёшт√  ўххъ ьюуєЄ с√Є№ ёючфрэ√ ышсю яєЄхь яюёыхфютрЄхы№эюую яЁшётрштрэш  чэрўхэшщ юЄфхы№э√ь ¤ыхьхэЄрь ьрёёштр, ышсю Ўхышъюь яЁш яюью∙ш ёяхЎшры№эющ ЇєэъЎшш cell.
╧юфўхЁъэхь ё ёрьюую эрўрыр, ўЄю трцэю ЁрчышўрЄ№  ўхщъє (¤ыхьхэЄ ьрёёштр  ўххъ) ш хх ёюфхЁцшьюх. ╩рцфр   ўхщър  ты хЄё  ьрёёштюь ёшёЄхь√ MATLAB, Єю хёЄ№ яюьшью ёюсёЄтхээю фрээ√ї ёюфхЁцшЄ т юЄтхфхээющ яюф эхх ярь Єш ъюья№■ЄхЁр х∙х ш ёыєцхсэє■ шэЇюЁьрЎш■, ю ъюЄюЁющ ь√ єцх ьэюую уютюЁшыш т√°х. ╬сЁрчэю уютюЁ ,  ўхщър - ¤Єю хх яюыхчэюх ёюфхЁцшьюх (ёюсёЄтхээю фрээ√х) яы■ё эхъюЄюЁр  єяЁрты ■∙р  юсюыюўър тюъЁєу ¤Єюую ёюфхЁцшьюую, яючтюы ■∙р  їЁрэшЄ№ т  ўхщъх яЁюшчтюы№э√х Єшя√ фрээ√ї ы■сюую ЁрчьхЁр.
┬ ёшёЄхьх MATLAB т√Ёрцхэшх ы■сюую Єшяр ьюцэю яЁхтЁрЄшЄ№ т  ўхщъє, чръы■ўшт хую т ЇшуєЁэ√х ёъюсъш. ╥ръшь юсЁрчюь, ЇшуєЁэ√х ёъюсъш  ты ■Єё  ъюэ- ёЄЁєъЄюЁюь  ўххъ. ─ы  ёЁртэхэш  эряюьэшь, ўЄю ъюэёЄЁєъЄюЁюь ўшёыют√ї ьрёёштют ёыєцрЄ ътрфЁрЄэ√х ёъюсъш (юяхЁрЎш  ъюэърЄхэрЎшш), р ъюэёЄЁєъЄюЁюь ёшьтюы№э√ї ьрёёштют - ряюёЄЁюЇ√.