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

char
double
╨шёєэюъ 3.9
╨рёяюыюцхээ√щ т яЁртющ ўрёЄш ¤Єюую юъэр тхЁЄшъры№э√щ ёЄюысхЎ чрфрхЄ ёююЄтхЄёЄтшх ьхцфє ЎтхЄюь юЄюсЁрцхэш   ўххъ ш шї Єшяюь. ┬ ЎтхЄэюь трЁшрэЄх эруы фэю тшфэю, ўЄю чхыхэ√щ ЎтхЄ ёююЄтхЄёЄтєхЄ ёЄЁєъЄєЁрь, ш яю¤Єюьє яЁ ьюєуюы№эшъ т ыхтющ эшцэхщ ўрёЄш шьххЄ чхыхэ√щ ЎтхЄ.
┬ЄюЁющ яЁш Єэ√щ ЇръЄ ёюёЄюшЄ т Єюь, ўЄю ъ эрёЄю ∙хьє ьюьхэЄє эрьш шчєўхэ√ яюўЄш тёх Єшя√ фрээ√ї ёшёЄхь√ MATLAB. ╬ёЄрыё  ыш°№ Єшя фрээ√ї sparse, яЁхфёЄрты ■∙шщ ёяхЎшры№э√щ ьхЄюф їЁрэхэш  ¤ыхьхэЄют ўшёыютющ ЁрчЁхцхээющ ьрЄЁшЎ√ (ъюышўхёЄтю эхэєыхт√ї ¤ыхьхэЄют ьрЄЁшЎ√ ьэюую ьхэ№°х юс∙хую ўшёыр ¤ыхьхэЄют). ▌ЄюЄ Єшя фрээ√ї тючэшърхЄ ш °шЁюъю яЁшьхэ хЄё , эряЁшьхЁ, яЁш Ёх°хэшш Єшяют√ї чрфрў фшЇЇхЁхэЎшры№э√ї єЁртэхэшщ. ╠√ яюфЁюсэю ЁрёёьюЄЁшь ¤ЄюЄ єчъюёяхЎшрышчшЁютрээ√щ Єшя фрээ√ї т ёыхфє■∙хщ уыртх, яюёт ∙хээющ тёЄЁюхээ√ь ёЁхфёЄтрь ёшёЄхь√ MATLAB фы  Ёх°хэш  Єшяют√ї чрфрў рыухсЁ√, рэрышчр ш ёЄрЄшёЄшъш. └ яюър ыш°№ яЁюфхьюэёЄЁшЁєхь, ъръ яЁхюсЁрчютрЄ№, эряЁшьхЁ, юс√ўэє■ ўшёыютє■ ьрЄЁшЎє т ЁрчЁхцхээє■:
└ = [0 0 3; 1 0 0; 0 0 0]; spA = sparse ( a ); spA =
(2,1) 7
(1,3) 3
MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх
109
╬Єё■фр тшфэю, ўЄю фы  ьрЄЁшЎ Єшяр sparse т ярь Єш ъюья№■ЄхЁр їЁрэ Єё  эх тёх ¤ыхьхэЄ√, р Єюы№ъю эхэєыхт√х тьхёЄх ё шї шэфхъёрьш. ┬ шЄюух ьрЄЁшЎр spA чрэшьрхЄ т ярь Єш ъюья№■ЄхЁр 40 срщЄ (ьюцэю єчэрЄ№ ъюьрэфющ whos spA), р шёїюфэр  ьрЄЁшЎр └ Єшяр double чрэшьрхЄ т ярь Єш 72 срщЄр, Єръ ўЄю ¤ъюэюьш  ярь Єш ъюья№■ЄхЁр эрышЎю.
╬ёЄртшт сюыхх яюфЁюсэюх шчєўхэшх Єшяр фрээ√ї sparse фю ёыхфє■∙хщ уырт√, эрЁшёєхь эруы фэє■ фшруЁрььє, фхьюэёЄЁшЁє■∙є■ эрсюЁ тёхї Єшяют фрээ√ї ёшёЄхь√ MATLAB ш шї ёт ч№ ьхцфє ёюсющ (ёь. Ёшё. 3.10).
array
char
numeric
struct
cell
unit8
double
sparce
╨шёєэюъ 3.10
╟фхё№ array - ёюсшЁрЄхы№э√щ ЄхЁьшэ фы  тёхї ьрёёштют ёшёЄхь√ MATLAB, р ЄхЁьшэ numeric ёшьтюышчшЁєхЄ тёх ўшёыют√х Єшя√. ═хы№ч  ёючфрЄ№ яхЁхьхээ√ї Єшяр array шыш numeric. ╠юцэю ёърчрЄ№, ўЄю ¤Єю юсюс∙хээ√х (тшЁЄєры№э√х) Єшя√.
╫Єхэшх ш чряшё№ яЁюшчтюы№э√ї сшэрЁэ√ї Їрщыют
╨рэхх эрьш с√ыш ЁрёёьюЄЁхэ√ Єръ эрч√трхь√х ╠└╥-Їрщы√, т ъюЄюЁ√ї ёюїЁрэ ■Єё  яхЁхьхээ√х шч Ёрсюўхщ юсырёЄш ёшёЄхь√ MATLAB. ▌Єш Їрщы√ шьх■Є эхюяєсышъютрээ√щ ЇюЁьрЄ, эю ыхуъю ьюуєЄ с√Є№ яЁюўшЄрэ√ ъюьрэфющ load. ╩Ёюьх Єюую, ёшёЄхьр MATLAB яЁхфюёЄрты хЄ яЁюуЁрььшёЄє ёяхЎшры№э√щ эрсюЁ ЇєэъЎшщ, ъюЄюЁ√х ьюцэю т√ч√трЄ№ шч яЁюуЁрьь эр  ч√ъх ╤ ш ъюЄюЁ√х яЁхфэрчэрўхэ√ фы  ёўшЄ√трэш  шэЇюЁьрЎшш шч ╠└╥-Їрщыют.
═ю ъръ с√Є№, хёыш фрээ√х эєцэю ттхёЄш эх шч ╠└╥-Їрщыр ш эх ё ъыртшрЄєЁ√, р ёўшЄрЄ№ шч єцх ёЇюЁьшЁютрээюую Їрщыр, яЁшўхь чряшё№ ¤Єюую Їрщыр ьюуыр яЁюшчтюфшЄ№ё  ёрь√ьш Ёрчэ√ьш ёяюёюсрьш ш яЁюуЁрььэ√ьш ёЁхфёЄтрьш. ╚ыш эєцэю ёюїЁрэшЄ№ Ёхчєы№ЄрЄ√ т√ўшёыхэшщ т Їрщырї чрЁрэхх юуютюЁхээюую ЇюЁьрЄр, яЁхфэрчэрўхээ√ї фы  фры№эхщ°хщ ЁрсюЄ√ т ёюёЄртх шэ√ї яЁюуЁрььэ√ї ёЁхфёЄт.
110 ├ыртр 3. ╠рёёшт√ ёшьтюыют, ёЄЁєъЄєЁ,  ўххъ. ╘рщыют√х юяхЁрЎшш
─ы  ¤Єшї Ўхыхщ яръхЄ MATLAB ЁрёяюырурхЄ яюыэ√ь эрсюЁюь ёяхЎшры№э√ї ЇєэъЎшщ фы  ЁрсюЄ√ ё Їрщырьш яЁюшчтюы№э√ї ЇюЁьрЄют ш Єшяют. ╧юф Єшярьш ь√ чфхё№ шьххь т тшфє Ёрчфхыхэшх Їрщыют эр сшэрЁэ√х Їрщы√ ш ЄхъёЄют√х Їрщы√.
┴шэрЁэ√х Їрщыр, ъръ шчтхёЄэю, яЁхфэрчэрўхэ√ фы  їЁрэхэш  яЁюшчтюы№э√ї фрээ√ї т тшфх яюЄюър срщЄют, эшъръ яЁхфэрьхЁхээю эх шэЄхЁяЁхЄшЁєхь√ї. ╤рь√х їрЁръЄхЁэ√х юяхЁрЎшш ё Єръшьш Їрщырьш - ¤Єю юяхЁрЎшш чряшёш шыш ёўшЄ√трэш  чрфрээюую ъюышўхёЄтр срщЄют шэЇюЁьрЎшш. ┬ яЁюЄштюяюыюцэюёЄ№ ¤Єюьє ёюфхЁцшьюх ЄхъёЄют√ї Їрщыют ЄЁръЄєхЄё  ъръ эрсюЁ тёхї ёшьтюыют шч эхъюЄюЁющ ъюфшЁютъш, шьх■∙шї тшчєры№эюх яЁхфёЄртыхэшх (¤Єю ьюцэю эрчтрЄ№ юсюс∙хээ√ь ЄхъёЄюь), р Єръцх чрфрээ√щ эрсюЁ Єръ эрч√трхь√ї єяЁрты ■∙шї ёшьтюыют, Єръшї, ъръ лтючтЁрЄ ърЁхЄъш╗, ляхЁхтюф ёЄЁюъш╗, лъюэхЎ Їрщыр╗. ┬ яюыэюь ёюуырёшш ёю ётюшь эрчтрэшхь ЄхъёЄют√х Їрщы√ шфхры№эю яюфїюф Є фы  їЁрэхэш  ЄхъёЄют, р сшэрЁэ√х Їрщы√ сюы№°х яюфїюф Є фы  яыюЄэюую (схч шчыш°эхую Ёрёїюфр ярь Єш) ш ёъЁ√Єэюую (эхы№ч  яЁюўшЄрЄ№ шї ёюфхЁцшьюх яЁюёЄхщ°шьш ЄхъёЄют√ьш ЁхфръЄюЁрьш Єшяр Notepad) їЁрэхэш  ўшёыют√ї фрээ√ї ш ьр°шээ√ї ъюфют ъюья№■ЄхЁэ√ї яЁюуЁрьь.
═хчртшёшью юЄ Єшяр Їрщыр яхЁхф эрўрыюь ЁрсюЄ√ хую эєцэю юЄъЁ√Є№ ёяхЎшры№эющ ЇєэъЎшхщ f open:
fid = fopen ( 'шь _Їрщыр', 'Їыру' )
уфх шь  Їрщыр ьюцхЄ яЁхфтрЁ Є№ё  яюыэ√ь яєЄхь ъ эхьє (шэрўх Їрщы фюыцхэ ЁрёяюырурЄ№ё  т Єхъє∙хь ърЄрыюух ёшёЄхь√ MATLAB). ┬ЄюЁющ ярЁрьхЄЁ ¤Єющ ЇєэъЎшш - Єръ эрч√трхь√щ Їыру юЄъЁ√Єш  Їрщыр уютюЁшЄ ю ёяюёюсх фры№эхщ°хщ ЁрсюЄ√ ё Їрщыюь:
V ╥юы№ъю фы  ўЄхэш 
V ╥юы№ъю фы  чряшёш (яЁхф√фє∙хх ёюфхЁцшьюх ЄхЁ хЄё , р эхёє∙хёЄтє■∙шщ Їрщы ёючфрхЄё )
,у+, ╫Єхэшх ш чряшё№ юфэютЁхьхээю
'р' ─юсртыхэшх т ъюэхЎ Їрщыр
╩ єърчрээ√ь т ЄхъёЄют√ї ёЄЁюърї сєътрь ёыхфєхЄ фюсрты Є№ сєътє '▄' фы  юЄъЁ√Єш  Їрщыр т сшэрЁэюь Ёхцшьх ш сєътє ' t' фы  юЄъЁ√Єш  Їрщыр т ЄхъёЄютюь Ёхцшьх. ═ряЁшьхЁ, Їыру ' r+t' ючэрўрхЄ юъЁ√Єшх ЄхъёЄютюую Їрщыр фы  ўЄхэш  ш чряшёш, Їыру ' wb' ючэрўрхЄ юЄъЁ√Єшх сшэрЁэюую Їрщыр фы  чряшёш.
╘єэъЎш  f open тючтЁр∙рхЄ ўшёыютющ шфхэЄшЇшърЄюЁ юЄъЁ√Єюую Їрщыр, ъюЄюЁ√щ эрфю шёяюы№чютрЄ№ т ърўхёЄтх ярЁрьхЄЁр фы  ЇєэъЎшщ ўЄхэш  ш чряшёш т ¤ЄюЄ Їрщы. ┼ёыш юяхЁрЎш  юЄъЁ√Єш  Їрщыр эх єфрырё№ (¤Єю тючьюцэю ъръ яю яЁшўшэх юЄёєЄёЄтш  Їрщыр, Єръ ш яю яЁшўшэх эхяЁртшы№эюую єърчрэш  яєЄш ъ эхьє эр фшёъх), Єю ЇєэъЎш  f open тючтЁр∙рхЄ -1. ┬ёхуфр ёыхфєхЄ яЁютхЁ Є№ тючтЁрЄ ЇєэъЎшш fopen.
MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх
111
┼ёыш Їрщы сюы№°х эх ЄЁхсєхЄё , хую ёыхфєхЄ ъръ ьюцэю ёъюЁхх (ўЄюс√ чЁ  эх эряЁ урЄ№ ъюья№■ЄхЁ ЁрсюЄющ ё эхэєцэ√ьш ЁхёєЁёрьш) чръЁ√Є№ ЇєэъЎшхщ
fclose:
fclose( fid )
╧юъюэўшт ё шчєўхэшхь тюяЁюёр юс юЄъЁ√Єшш Їрщыют, яхЁхщфхь ъ тюяЁюёє ю ўЄхэшш ш чряшёш т эшї яюыхчэющ шэЇюЁьрЎшш. ╤хщўрё ёюёЁхфюЄюўшьё  эр сшэрЁэ√ї Їрщырї, р ЄхъёЄют√х юЄыюцшь фю ёыхфє■∙хую яюфЁрчфхыр.
╫Єхэшх ш чряшё№ шэЇюЁьрЎшш т сшэрЁэ√х Їрщы√ юёє∙хёЄты ■Єё  ЇєэъЎш ьш fread ш fwrite. ╘єэъЎш  fwrite, яЁхфэрчэрўхээр  фы  чряшёш шэЇюЁьрЎшш т сшэрЁэ√х Їрщы√, шьххЄ ёыхфє■∙шх рЁуєьхэЄ√:
fwrite( fid, A, 'precision' )
уфх fid - Їрщыют√щ шфхэЄшЇшърЄюЁ, тючтЁр∙рхь√щ ЇєэъЎшхщ f open; A - ўшёыютющ тхъЄюЁ шыш ьрЄЁшЎр, ў№ш ¤ыхьхэЄ√ яюфыхцрЄ чряшёш т Їрщы; ёЄЁюър 'precision' уютюЁшЄ ю ЁрчьхЁх ярь Єш, юЄтюфшьющ яюф тх∙хёЄтхээ√х ўшёыр. ╠√ чэрхь, ўЄю т ёшёЄхьх MATLAB яюф тх∙хёЄтхээ√х ўшёыр юЄтюф Є 8 срщЄ шыш 64 сшЄр. ╙ърчрэшхь ЇєэъЎшш fwrite ю Єръюь ЁрчьхЁх ярь Єш ёыєцшЄ ЄхъёЄютр  ёЄЁюър ' float64'.
╨рёёьюЄЁшь яЁръЄшўхёъшщ яЁшьхЁ, шыы■ёЄЁшЁє■∙шщ ЁрсюЄє ЇєэъЎшш fwrite. ┬ ёыхфє■∙хь ЇЁруьхэЄх ёючфр■Єё  тхъЄюЁ-ёЄюысхЎ └ ЁрчьхЁюь 3 ї 1 ш ьрЄЁшЎр ┬ ЁрчьхЁюь 2x3, ъюЄюЁ√х чрЄхь чряшё√тр■Єё  т Їрщы ё шьхэхь 'dataTest.gqw' (ёЄюы№ т√ўєЁэюх Ёрё°шЁхэшх шьхэш Їрщыр т√сЁрэю ёяхЎшры№эю, ўЄюс√ юэю ёыєўрщэю эх ёютярыю ё Ёрё°шЁхэш ьш Їрщыют шчтхёЄэ√ї Windows-яЁшыюцхэшщ):
р = [ 1; 2; 3 ]; ┬ = [ 4 5 6; 7 8 9 ]; fidl = fopen( 'dataTest.gqw', 'wb' );
fwrite( fidl, a, 'float64' fwrite( fidl, B, 'float64' fclose( fidl );
).