"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)╤ яюью∙№■ яЁхфёЄртыхээюую т√°х ъюфр фюёЄшурхЄё юЄэюёшЄхы№эю яЁшхьыхьюх шчюсЁрцхэшх фтшцхэш сєёшэъш, т яхЁтє■ юўхЁхф№ шч-чр Єюую, ўЄю юс·хь яхЁхЁшёютъш сєёшэъш яю ёЁртэхэш■ ёю тёхщ яыю∙рф№■ юс·хъЄр axes эхтхышъ. ┼ёыш с√ ЄЁхсютрыё сюы№°ющ юс·хь яхЁхЁшёютъш, Єю яЁхфёЄртыхээ√щ ёяюёюс эх ьюу с√ фюёЄшў№ яЁшхьыхьющ ёъюЁюёЄш.
MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 159 ┬ Єръшї ёыєўр ї шёяюы№чє■Є яЁшэЎшяшры№эю фЁєующ ёяюёюс, яЁш ъюЄюЁюь тёх яЁюьхцєЄюўэ√х ърфЁ√ ЁрёёўшЄ√тр■Єё ш чряюьшэр■Єё чрЁрэхх, яюёых ўхую ляЁюшуЁ√тр■Єё ╗ ёяхЎшры№эющ лъшэхьрЄюуЁрЇшўхёъющ╗ ЇєэъЎшхщ movie. ╤ яюью∙№■ ¤Єюую ёяюёюср шчюсЁрчшь лсЁюєэютёъюх фЁюцрэшх╗ 200 Єюўхъ т Ёрьърї чрфрээюую яЁ ьюєуюы№эшър, яЁшўхь їрюЄшўэюёЄ№ фтшцхэш Єюўхъ (лрЄюьют╗) сєфхЄ юсхёяхўштрЄ№ё ЇєэъЎш ьш rand ш randn, яюЁюцфр■∙шьш ёююЄтхЄёЄтхээю ЁртэюьхЁэю ЁрёяЁхфхыхээ√х ш эюЁьры№эю ЁрёяЁхфхыхээ√х ёыєўрщэ√х ўшёыр. ╧юфуюЄютшь уЁрЇшўхёъюх юъэю фы яюърчр 100 ърфЁют (Frames) лъшэюЇшы№ьр╗ яЁю сЁюєэютёъюх фтшцхэшх 200 рЄюьют, ёЁхфэ■■ ёъюЁюёЄ№ ъюЄюЁ√ї їрЁръЄхЁшчєхь ярЁрьхЄЁюь v: я└ = 200; nFrames = 100; v = 0.03; ї = rand(nA,1) - 0.5; є = rand(nA,l) - 0.5; h = plot(x,є,'.'); set(h,'MarkerSize',10); axis([-l 1 -1 1]); axis square; Buf = moviein( nFrames ) ; ┬ яюёыхфэхщ ёЄЁюъх ё яюью∙№■ ЇєэъЎшш moviein ёючфрхЄё ушурэЄёъшщ сєЇхЁ Buf т ярь Єш ъюья№■ЄхЁр яюф тёх ърфЁ√ ъшэюЇшы№ьр: size( Buf ) ans = 24920 100 ╟фхё№ яюф ърцф√щ шч 100 ърфЁют (100 ёЄюысЎют ьрёёштр Buf Єшяр double) юЄтюфшЄё 24 920 яючшЎшщ (ёЄЁюъ ьрёёштр Buf). ╧юёыхфэхх ўшёыю чртшёшЄ юЄ Єхъє∙хую ЁрчьхЁр уЁрЇшўхёъюую юъэр ш ты хЄё яхЁхьхээ√ь; Єръ, ЁрчьхЁ ¤Єюую юъэр т ы■сющ ьюьхэЄ ьюцэю шчьхэшЄ№ ё яюью∙№■ ь√°ш. ┬ фрээюь ъюэъЁхЄэюь ёыєўрх ьрёёшт Buf ёюёЄюшЄ шч 2 492 000 ¤ыхьхэЄют ш чрэшьрхЄ т ярь Єш ъюья№■ЄхЁр 19 936 000 срщЄ (юъюыю 20 ╠срщЄ). ╥хяхЁ№ ЁрёёўшЄ√трхь ърцф√щ ърфЁ ш лчрїтрЄ√трхь╗ хую т сєЇхЁ Buf (яю юфэюьє ърфЁє эр ърцф√щ ёЄюысхЎ ьрёёштр Buf) ёяхЎшры№эющ ЇєэъЎшхщ getf rame: for k=l:nFrames, x=x+v*randn(nA, 1) ;y=y+v*randn (nA, 1); ... set(h,'XData',x,'YData',y); Buf(:,k) = getframe; end ╬ъюэўрЄхы№эю яЁюъЁєўштрхь лёэ Є√щ Ёюышъ╗ ё яюью∙№■ ЇєэъЎшш movie 5 Ёрч яюфЁ ф: movie( Buf, 5 ) ; ╩ръ Єюы№ъю юЄярфрхЄ эхюсїюфшьюёЄ№ т їЁрэхэшш ъшэюЇшы№ьр, ёЁрчє цх юётюсюцфрхь ярь Є№ т Ёрсюўхь яЁюёЄЁрэёЄтх ёшёЄхь√ MATLAB, чрэ Єє■ яюф сєЇхЁ Buf: clear Buf 160 ├ыртр 5. ╚эЄхЁръЄштэ√щ Ёхцшь ЁрсюЄ√ ш хую ртЄюьрЄшчрЎш ё яюью°№■ ёЎхэрЁшхт ▌Єю эєцэю ёфхырЄ№ ъръ ьюцэю с√ёЄЁхх, яюёъюы№ъє юс√ўэю тшфхюсєЇхЁ√ шьх■Є ушурэЄёъшх ЁрчьхЁ√ ш чЁ Ёрёїюфє■Є фЁруюЎхээ√х ЁхёєЁё√ ъюья№■ЄхЁр. ╬Єфхы№э√х ърфЁ√ яюфуюЄютыхээюую ъшэюЇшы№ьр ьюцэю ёъюяшЁютрЄ№ ЇєэъЎшхщ frame2im т фтр ўшёыют√ї ьрёёштр: т ьрёёшт яшъёхыют ш ЄрсышЎє ЎтхЄют (¤Єш ьрёёшт√ с√ыш яюфЁюсэю ЁрёёьюЄЁхэ√ т уы. 2). ╤ыхфє■∙шщ ЇЁруьхэЄ чряюьшэрхЄ k-щ ърфЁ т ьрёёштх яшъёхыют X ш ЄрсышЎх ЎтхЄют ЄрЁ: [X, ЄрЁ] = frame2im( Buf( : , k ) ); ┬ уы. 2 юяшёрэю, ъръ ьюцэю ьрёёшт√ X ш ЄрЁ чряшёрЄ№ т Їрщы√ Ёрчышўэ√ї ЇюЁьрЄют фы фышЄхы№эюую їЁрэхэш эр фшёъх. ┬ Єю цх тЁхь ты хЄё ръЄєры№эющ ш юсЁрЄэр чрфрўр. ╚ч Їрщыр шэЇюЁьрЎш ўшЄрхЄё т ьрёёшт яшъёхыют XI ш ЄрсышЎє ЎтхЄют ЄрЁ, яюёых ўхую ЇєэъЎшхщ im2 frame юэш ьюэЄшЁє■Єё ъръ ърфЁ Їшы№ьр ёшёЄхь√ MATLAB: Buf = moviein( nFrames ); Buf( : , 1) = im2frame( XI, map); ╟фхё№, юфэръю, ёыхфєхЄ юЄьхЄшЄ№ фтр трцэ√ї юсёЄю Єхы№ёЄтр. ┬ю-яхЁт√ї, ЇєэъЎш im2frame ЁрсюЄрхЄ Єюы№ъю ё шэфхъёшЁютрээ√ьш шчюсЁрцхэш ьш (ёь. уы. 2) ш эх ЁрсюЄрхЄ ё шчюсЁрцхэш ьш Єшяр truecolor (ўЄю, ъюэхўэю, т√ч√трхЄ ёюцрыхэшх). ┼ёыш є трё шьххЄё шьхээю шчюсЁрцхэшх truecolor, Єю хую эєцэю сєфхЄ ёрьюёЄю Єхы№эю яЁхюсЁрчютрЄ№ т шэфхъёшЁютрээюх шчюсЁрцхэшх. ┬ю-тЄюЁ√ї, чэр ЁрчьхЁ шчюсЁрцхэш т яшъёхырї, ёыхфєхЄ яЁхфтрЁшЄхы№эю (яхЁхф т√чютюь ЇєэъЎшш moviein) єёЄрэютшЄ№ ЁрчьхЁ уЁрЇшўхёъюую юъэр ёшёЄхь√ MATLAB Ёртэ√ь ¤Єюьє ЁрчьхЁє (ъръ ¤Єю ёфхырЄ№, Ёрёёърчрэю т уы. 2). ╟рЄхь ўшЄрхЄё ёюфхЁцшьюх фЁєуюую уЁрЇшўхёъюую Їрщыр ш юэю ьюэЄшЁєхЄё єцх т ёыхфє■∙шщ ърфЁ Їшы№ьр Buf: ш Єръ фрыхх тяыюЄ№ фю яюёыхфэхую ърфЁр ё эюьхЁюь nFrames, яюёых ўхую т√ч√трхЄё ЇєэъЎш movie: movie( Buf ) ┬ ЇюЁьрЄх т√чютр ¤Єющ ЇєэъЎшш ё хфшэёЄтхээ√ь рЁуєьхэЄюь яЁюъЁєЄър тшфхюЁюышър юёє∙хёЄты хЄё юфшэ Ёрч, Єръ ўЄю эхЄ ёяхЎшры№эющ эхюсїюфшьюёЄш т√ч√трЄ№ ЇєэъЎш■ movie ё фтєь рЁуєьхэЄрьш, Єю хёЄ№ movie (Buf, 1). ╠єы№Єшьхфшщэ√х ёяюёюсэюёЄш яръхЄр MATLAB срчшЁє■Єё ъръ эр рэшьрЎшш, ЁрёёьюЄЁхээющ т√°х, Єръ ш эр тючьюцэюёЄш тюёяЁюшчтюфшЄ№ чтєъ (хёыш эр ъюья№■ЄхЁх яЁшёєЄёЄтєхЄ ёююЄтхЄёЄтє■∙хх юсюЁєфютрэшх) ёЄрэфрЁЄэюую фы яырЄЇюЁь√ Windows ЇюЁьрЄр WAVE. ╤ююЄтхЄёЄтє■∙шх Їрщы√ шьх■Є, ъръ шчтхёЄэю, Ёрё°шЁхэшх wav. ╤шёЄхьр MATLAB яючтюы хЄ ўшЄрЄ№ ш чряшё√трЄ№ Їрщы√ ¤Єюую ЇюЁьрЄр. ╫Єхэшх юёє∙хёЄты хЄё ё яюью∙№■ ЇєэъЎшш wavread, р чряшё№- ё яюью∙№■ ЇєэъЎшш wavwrite. ═ръюэхЎ, ЇєэъЎш sound (р Єръцх яюўЄш рэрыюушўэр хщ ЇєэъЎш sounds ё) юёє∙хёЄты хЄ Ёхры№эюх тюёяЁюшчтхфхэшх чтє- ┘ MATLAB 5.x. ┬√ўшёыхэш , тшчєрышчрЎш , яЁюуЁрььшЁютрэшх 161 ър, яюыєўр т ърўхёЄтх рЁуєьхэЄр тх∙хёЄтхээ√щ тхъЄюЁ, ёюфхЁцр∙шщ яюёыхфютрЄхы№эюёЄ№ шчьхЁхэшщ уЁюьъюёЄш чтєър. ╥рър яюёыхфютрЄхы№эюёЄ№ ўшёхы їрЁръЄхЁшчєхЄё ўрёЄюЄющ фшёъЁхЄшчрЎшш (фы ЇюЁьрЄр CD Audio - 44,1 ъ├Ў) ш ЁрчЁ фэюёЄ№■ юЄёўхЄют (фы CD Audio ¤Єю 16 сшЄ). ┬ ёыєўрх ёЄхЁхючтєър ЇєэъЎш sound яюыєўрхЄ т ърўхёЄтх рЁуєьхэЄр ьрЄЁшЎє m x 2, т ъюЄюЁющ ърцф√щ ёЄюысхЎ ёюфхЁцшЄ фрээ√х фы юфэюую шч ёЄхЁхюърэрыют. ╧Ёюшыы■ёЄЁшЁєхь яЁшьхэхэшх яхЁхўшёыхээ√ї ЇєэъЎшщ. ─юяєёЄшь, эр фшёъх шьххЄё чряшёрээ√щ ёЄрэфрЁЄэ√ьш фы яырЄЇюЁь√ Windows ёЁхфёЄтрьш ёЄхЁхюЇюэшўхёъшщ чтєъютющ Їрщы ' soundl23.wav', яЁшўхь хую ърўхёЄтю ёююЄтхЄёЄтєхЄ ёЄрэфрЁЄє CD Audio. ╤ўшЄ√трхь чтєъютє■ шэЇюЁьрЎш■ шч ¤Єюую Їрщыр т ёюёЄю ∙є■ шч фтєї ёЄюысЎют ўшёыютє■ ьрЄЁшЎє V [V,f,b] = wavreadCsoundl23.wav'); р т ёъры Ёэє■ яхЁхьхээє■ f яЁш ¤Єюь ўшЄрхЄё ўрёЄюЄр фшёъЁхЄшчрЎшш, т яхЁхьхээє■ b - ЁрчЁ фэюёЄ№. ╥ръ ъръ т Їрщы ' soundl23. wav' чтєъютр шэЇюЁьрЎш с√ыр чряшёрэр ё ърўхёЄтюь CD Audio, Єю яхЁхьхээр f фюыцэр яЁшэ Є№ чэрўхэшх 44 100 (ухЁЎ), р яхЁхьхээр b фюыцэр с√Є№ Ёртэр 16 (сшЄ эр юфшэ юЄёўхЄ). ╧ЁютхЁ хь ш єсхцфрхьё , ўЄю ¤Єю фхщёЄтшЄхы№эю шьххЄ ьхёЄю (ёь. Ёшё. 5.7). лA MATLAB Command Window Edit Window Help ' D g? I X ^ ╪! **> I ffl tg if* I ? .!|S(:16i|titlI>e ╨шёєэюъ 5.7 ╥хяхЁ№ ьюцэю тюёяЁюшчтхёЄш чтєъ: sound( V, f, b ) єърчрт ъръ ёрь яюЄюъ чтєъют√ї юЄёўхЄют т тшфх ўшёыютюую ьрёёштр (ьрЄЁшЎ√ m ї 2) V, Єръ ш хую їрЁръЄхЁшёЄшъш т тшфх ўрёЄюЄ√ фшёъЁхЄшчрЎшш ш ЁрчЁ фэюёЄш юЄёўхЄют. ╩ръшї-ышсю тёЄЁюхээ√ї ёЁхфёЄт яю Ёрчєьэюьє ртЄюьрЄшўхёъюьє яЁхюсЁрчютрэш■ ьрёёштр чтєъют√ї юЄёўхЄют V т фЁх ёшёЄхь√ MATLAB эхЄ, эю юэш тёхуфр ьюуєЄ эрщЄшё№ ёЁхфш ьэюуюўшёыхээ√ї яръхЄют Ёрё°шЁхэш ¤Єющ ёшёЄхь√. с ╟ры 409 162 ├ыртр 5. ╚эЄхЁръЄштэ√щ Ёхцшь ЁрсюЄ√ ш хую ртЄюьрЄшчрЎш ё яюью°№■ ёЎхэрЁшхт ┬ ы■сюь ёыєўрх эрь эшъЄю эх чряЁх∙рхЄ яюяЁюсютрЄ№ ётюш ёюсёЄтхээ√х ёшы√ т ¤Єюь фхых. ┬ ърўхёЄтх яЁюёЄхщ°хую яЁшьхЁр яюёьюЄЁшь, ўЄю яюыєўшЄё , хёыш юёє∙хёЄтшЄ№ эхсюы№°юх чр°єьыхэшх чтєъютюую ёшуэрыр: [m,n] = size( V ); s = 0.05; VI = zeros ( m,l ); for k=l:m, VI(k) = V(k,1)+s*randn(1); end ╤эютр т√ч√трхь ЇєэъЎш■ sound ш лёыє°рхь тхъЄюЁ╗ VI, є ъюЄюЁюую шьххЄё Єюы№ъю юфшэ ёЄюысхЎ, т ъюЄюЁ√щ чрэхёхэ чр°єьыхээ√щ чтєъ, яюыєўхээ√щ шч яхЁтюую ёЄхЁхюърэрыр шёїюфэюую чтєър. ╟рЁрэхх с√ыю ёэю, ўЄю ърўхёЄтю чтєър (т ьєч√ъры№эюь ёь√ёых) юЄ Єръшї яЁхюсЁрчютрэшщ ьюцхЄ Єюы№ъю яюэшчшЄ№ё . |
|
|