"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)╥хяхЁ№ ьюцэю яЁюўшЄрЄ№ шч Їрщыр ёюїЁрэхээ√х Єрь чэрўхэш тхъЄюЁр ш ьрЄЁшЎ√, ўЄю ш шыы■ёЄЁшЁєхЄ ёыхфє■∙шщ ЇЁруьхэЄ ъюфр:
fidl = fopen( 'dataTest.gqw', 'rb' ); ж [ a , count ] = fread( fidl, [1,3], 'float64' ); [ ┬ , count ] = fread( fidl, [2,3], 'float64' ); fcloset fidl ); ╦хуъю єсхфшЄ№ё , ўЄю яЁюўшЄрээ√х чэрўхэш ёютярфр■Є ё Ёрэхх чряшёрээ√ьш. ▌Єю яЁюшчю°ыю яюЄюьє, ўЄю ь√ Єюўэю чэрхь, ўЄю ш т ъръюь яюЁ фъх с√ыю чряшёрэю т Їрщы (Ёрэхх ь√ шчєўшыш, ўЄю т ярь Єш ъюья№■ЄхЁр ьрёёшт√ їЁрэ Єё яю ёЄюысЎрь, эю юэш Єюўэю т Єръюь цх яюЁ фъх чряшё√тр■Єё т Їрщы√ ш ўшЄр■Єё шч эшї). ╚ьхээю ¤Єю шьх■Є т тшфє, ъюуфр уютюЁ Є ю чэрэшш ЇюЁьрЄр ЇрЄр. ┼ёыш ЇюЁьрЄ сшэрЁэюую Їрщыр эхшчтхёЄхэ, Єю яЁртшы№эю шэЄхЁяЁхЄшЁютрЄ№ хую ёюфхЁцшьюх эхтючьюцэю (хёыш, ъюэхўэю, шёъы■ўшЄ№ тючьюцэюёЄ№ єурф√трэш эр юёэютх эхяюыэющ шэЇюЁьрЎшш). ╚ч яЁхфёЄртыхээюую ЇЁруьхэЄр тшфэю Єръцх, ўЄю ьюцэю т√ч√трЄ№ ЇєэъЎш■ f read ш ё фтєь тючтЁр∙рхь√ьш чэрўхэш ьш. ╧Ёш ¤Єюь тЄюЁюх тючтЁр∙рхьюх чэрўхэшх, Єю хёЄ№ count, Ёртэю ўшёыє Ёхры№эю яЁюўшЄрээ√ї тх∙хёЄтхээ√ї ўшёхы. ╧Ёш ўЄхэшш тхъЄюЁр р ¤Єю ўшёыю сєфхЄ Ёртэю 3, р яЁш ўЄхэшш ьрЄЁшЎ√ ┬ - сєфхЄ Ёртэю 6: ┬ = 4 5 6 7 8 9 count = с ╥хяхЁ№ чрфрфшьё тюяЁюёюь ю Єюь, ўЄю эєцэю ёфхырЄ№, ўЄюс√ ёЁрчє яюёых юЄъЁ√Єш ёЇюЁьшЁютрээюую т√°х сшэрЁэюую Їрщыр 'dataTest.gqw' яЁюўшЄрЄ№ ¤ыхьхэЄ√ ьрЄЁшЎ√ ┬ ЁрчьхЁюь 2x3, эх ўшЄр яЁхфтрЁшЄхы№эю тхъЄюЁ р ЁрчьхЁюь 1x3. ╬ЄтхЄ ёюёЄюшЄ т Єюь, ўЄю эєцэю тюёяюы№чютрЄ№ё ЇєэъЎшхщ f seek фы яючшЎшюэшЁютрэш Їрщыютюую єърчрЄхы . ╧юёых юЄъЁ√Єш Їрщыр хую єърчрЄхы№ Ёрёяюыюцхэ яхЁхф ёрь√ь яхЁт√ь срщЄюь, Єръ ўЄю юэ яюърч√трхЄ эр ЄюЄ срщЄ, ъюЄюЁ√щ сєфхЄ яЁюўшЄрэ яхЁтющ цх юяхЁрЎшхщ ўЄхэш шч ¤Єюую Їрщыр. ╧юёых яЁюўЄхэш юфэюую тх∙хёЄтхээюую ўшёыр Їрщыют√щ єърчрЄхы№ яЁюфтшэхЄё эр 8 срщЄ тяхЁхф ш ЁрёяюыюцшЄё яхЁхф фхт Є√ь срщЄюь. ╥ръшь юсЁрчюь, яю ьхЁх ўЄхэш ўшёхы шч Їрщыр хую єърчрЄхы№ яЁюфтшурхЄё тяхЁхф ш тёхуфр ЁрёяюырурхЄё яхЁхф яхЁт√ь х∙х эх яЁюўшЄрээ√ь срщЄюь. ╥хъє∙хх яюыюцхэшх Їрщыютюую єърчрЄхы ьюцэю єчэрЄ№, т√чтрт ЇєэъЎш■ f tell: CurPos = ftell ( fid ); MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 115 ─ы шчьхэхэш Єхъє∙хую яюыюцхэш Їрщыютюую єърчрЄхы ъръ Ёрч ш ёыєцшЄ ЇєэъЎш f seek: fseek( fid, number, 'flag' ) яхЁхьх∙р■∙р ¤ЄюЄ єърчрЄхы№ эр number срщЄ (тяхЁхф шыш эрчрф т чртшёшьюёЄш юЄ чэрър Ўхыюую ўшёыр number) юЄ хую Єхъє∙хую яюыюцхэш , хёыш ' flag' яЁхфёЄртыхэ ёЄЁюъющ ' cof', шыш юЄ эрўрыр Їрщыр, ъюуфр ярЁрьхЄЁ ' flag' хёЄ№ 'bof', ш, эръюэхЎ, т ёыєўрх чэрўхэш Їырур 'eof яхЁхьх∙хэшх Їрщыютюую єърчрЄхы юЄёўшЄ√трхЄё юЄ ъюэЎр Їрщыр. ┬ Ёхчєы№ЄрЄх ёыхфє■∙шщ ЇЁруьхэЄ яючтюы хЄ яЁюўшЄрЄ№ шч Їрщыр ' dataTest. gqw' Єюы№ъю ьрЄЁшўэє■ ёюёЄрты ■∙є■ ¤Єюую Їрщыр: fidl = fopen( 'dataTest.gqw', 'rb' ); fseek( fidl, 24, 'bof ); [ ┬ , count ] = fread( fidl, [2,3], 'float64' ); fclose( fidl ); яюёъюы№ъє ь√ ё яюью∙№■ ЇєэъЎшш fseek яЁюяєёърхь юЄ эрўрыр Їрщыр яхЁт√х 24 = 3 * 8 срщЄ (ЄЁш тх∙хёЄтхээ√ї ўшёыр т ЇюЁьрЄх яръхЄр MATLAB). ╥хяхЁ№ юсёєфшь тючьюцэюёЄ№ ю°шсюўэющ ёшЄєрЎшш, ъюуфр юёє∙хёЄты хЄё яюя√Єър ўЄхэш Їрщыр яюёых Єюую, ъръ тёх хую ёюфхЁцшьюх єцх яЁюўшЄрэю. ▀ёэю, ўЄю яхЁхф Єръющ яюя√Єъющ ўЄхэш Їрщыют√щ єърчрЄхы№ Ёрёяюыюцхэ тёыхф чр яюёыхфэшь срщЄюь Їрщыр. ▌Єє ёшЄєрЎш■ ьюцэю т√ тшЄ№ ё яюью∙№■ ЇєэъЎшш feof, яЁшэшьр■∙хщ т ърўхёЄтх ётюхую хфшэёЄтхээюую рЁуєьхэЄр Їрщыют√щ шфхэЄшЇшърЄюЁ. ┼ёыш ъюэхЎ Їрщыр єцх фюёЄшуэєЄ, Єю ЇєэъЎш тючтЁр∙рхЄ ыюушўхёъє■ хфшэшЎє (лшёЄшэє╗, Єю хёЄ№ яЁюёЄю 1), р т яЁюЄштэюь ёыєўрх ¤Єр ЇєэъЎш тючтЁрЄшЄ эєы№ (лыюц№╗). ┼ёыш эх юёє∙хёЄты Є№ яЁютхЁъє эр фюёЄшцхэшх ъюэЎр Їрщыр ш яЁюфюыцрЄ№ ўшЄрЄ№ Їрщы, Єю яюыєўрхЄё ёыхфє■∙шщ Ёхчєы№ЄрЄ: fread(fidl,8,'float64') ans = Empty matrix: 8-by-0 ─ы яютЄюЁэюую яЁюўЄхэш Їрщыр ьюцэю т√чтрЄ№ ЇєэъЎш■ frewind( fid ) тючтЁр∙р■∙є■ Їрщыют√щ єърчрЄхы№ эр эрўрыю Їрщыр. 116 ├ыртр 3. ╠рёёшт√ ёшьтюыют, ёЄЁєъЄєЁ, ўххъ. ╘рщыют√х юяхЁрЎшш *> MATLAB Command Window file. Edit Window Help ж '0 ╗ feiTOf(fidl) tg|toI ў.______. aiis: At end-of-file. +╪ ╨шёєэюъ 3.14 ╧юфтюф шЄюу, ьюцэю ёърчрЄ№, ўЄю яЁш яюя√Єъх ўЄхэш чр ъюэЎюь Їрщыр эх яЁюшёїюфшЄ эшўхую ёЄЁр°эюую, хёыш ЁрсюЄр тхфхЄё т шэЄхЁръЄштэюь Ёхцшьх т ъюьрэфэюь юъэх ёшёЄхь√ MATLAB, Єръ ъръ ьюцэю ыхуъю яЁюфшруэюёЄшЁютрЄ№ ¤Єє ёшЄєрЎш■ ш шчьхэшЄ№ яЁхфяЁшэшьрхь√х фхщёЄтш . ╬фэръю ¤Єр ёшЄєрЎш юярёэр т яЁюуЁрььэюь Ёхцшьх, ю ўхь фрыхх ь√ х∙х сєфхь уютюЁшЄ№ т яюфЁрчфхых, яюёт ∙хээюь яЁюуЁрььшЁютрэш■ ╠-ЇєэъЎшщ. ╬яєёър эхъюЄюЁ√х ьрыюёє∙хёЄтхээ√х э■рэё√, ьюцэю ёърчрЄ№, ўЄю ЇєэъЎш fwrite яЁхфэрчэрўхэр т юёэютэюь фы чряшёш т сшэрЁэ√х Їрщы√ ўшёыют√ї чэрўхэшщ ¤ыхьхэЄют ьрёёштют Єшяр double ёшёЄхь√ MATLAB. ╧ю¤Єюьє ЄЁхЄшщ ярЁрьхЄЁ ¤Єющ ЇєэъЎшш яюўЄш тёхуфр юфшэ ш ЄюЄ цх, Єю хёЄ№ ты хЄё ёЄЁюъющ ' f Ioat64' (шёяюы№чютрэшх шэ√ї ЇюЁьрЄэ√ї ЄюўэюёЄэ√ї Їыруют, ё юфэющ ёЄюЁюэ√, эх юўхэ№ ръЄєры№эю, р ё фЁєующ - ¤Єю ш эх яЁюёЄющ тюяЁюё). ┬ Єю цх тЁхь ЇєэъЎш f read юс чрэр юсхёяхўшЄ№ тючьюцэюёЄ№ ўЄхэш фрээ√ї, ёючфрээ√ї т фЁєушї яЁюуЁрььэ√ї ш ч√ъют√ї юъЁєцхэш ї. ┬ ¤Єющ ЇєэъЎшш шёяюы№чютрэшх ЄюўэюёЄэ√ї Їыруют, юЄышўэ√ї юЄ ёЄЁюъш 'float64', тхё№ьр ръЄєры№эю ш юўхэ№ °шЁюъю яЁшьхэ хЄё эр яЁръЄшъх. ┬юЄ яЁюёЄхщ°шщ яЁшьхЁ эр ¤Єє Єхьє. ┬ ч√ъх ╤ (шыш C++) тх∙хёЄтхээ√х ўшёыр ё яыртр■∙хщ чря Єющ ьюуєЄ с√Є№ яЁхфёЄртыхэ√ ъръ ё фтющэющ ЄюўэюёЄ№■ (¤Єю хфшэёЄтхээ√щ трЁшрэЄ яръхЄр MATLAB), Єръ ш ё юфшэрЁэющ. ┬ яюёыхфэхь ёыєўрх ърцфр яхЁхьхээр Єръюую Єшяр чрэшьрхЄ т ярь Єш ъюья№■ЄхЁр 4 срщЄр. ╥юуфр яЁш ўЄхэшш шч Їрщыр Єръшї чэрўхэшщ ЇєэъЎшхщ f read ЄюўэюёЄэющ Їыру фюыцхэ с√Є№ ёЄЁюъющ ' float32'. ╦хуъю яЁютхЁшЄ№ тёх ёърчрээюх. ┬юёяюы№чєхьё шэЄхуЁшЁютрээющ ёЁхфющ Developer Studio ъюьяшы ЄюЁр Microsoft Visual C++ 5.0/6.0 ш ёючфрфшь яЁюёЄхщ°шщ ъюэёюы№э√щ яЁюхъЄ (ўЄюс√ эх ёт ч√трЄ№ё ёю ёыюцэ√ьш, эю яюёЄюЁюээшьш тюяЁюёрьш Єшяр уЁрЇшўхёъюую шэЄхЁЇхщёр яюы№чютрЄхы ), т Ёрьърї ъюЄюЁюую эряш°хь хфшэёЄтхээ√щ Їрщы, ёюфхЁцр∙шщ ёыхфє■∙шщ ЄхъёЄ яЁюуЁрьь√ эр ч√ъх C++: linclude int main( void ) FILE* fid = NULL; MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 117 char* pF = 'd:\\Matlab\\bin\\cTest.xxx'; float a=l.l, b = 2.1, ё = 3.1; fid = fopen( pF, 'wb' ); fwrite( &a, sizeof (float), 1, fid ); fwrite( &b, sizeof (float), 1, fid ); fwrite ( &c, sizeof (float), 1, fid ); fclose( fid ); return 0; ╬ЄъюьяшышЁєхь ¤ЄюЄ яЁюхъЄ, чряєёЄшь эр т√яюыэхэшх яюыєўшт°шщё яЁюуЁрььэ√щ ьюфєы№, ъюЄюЁ√щ ш чряш°хЄ т сшэрЁэ√щ Їрщы ' cTest. xxx' ЄЁш тх∙хёЄтхээ√ї ўшёыр Єшяр float (ЁрчьхЁюь яю 4 срщЄр), Ёртэ√х 1.1, 2.1 ш 3.1 ёююЄтхЄёЄтхээю. ╧юёых ¤Єюую т ъюьрэфэюь юъэх ёшёЄхь√ MATLAB т√яюыэшь ёыхфє■∙шщ ЇЁруьхэЄ ъюфр эр ╠- ч√ъх: |
|
|