Matlab з'яўляецца камерцыйным "Матрыца Лабараторыя" пакет, які працуе як інтэрактыўная серада праграмавання. Яна з'яўляецца асновай лінейкі праграмнага забеспячэння матэматычнага факультэта, а таксама даступны для PC і Макінтошы, і можа быць знойдзена на CIRCA VAXes. Matlab добра прыстасаваны да лікавых эксперыментаў, так як асноўныя алгарытмы для функцый ад Matlab убудаваныя і пастаўляюцца м-файлаў на аснове стандартных бібліятэк LINPACK і EISPACK.
Matlab праграмы і файлы сцэнарыяў заўсёды маюць імёны, якія сканчаюцца на "м".; Мова праграмавання з'яўляецца выключна простым, так як амаль кожны аб'ект дадзеных, мяркуецца, што масіў. Графічны выснову можна дапоўніць лікавых вынікаў.
Інтэрнэт абслугоўванне прадастаўляецца Matlab радка (падвойная стрэлка), як правіла (спіс усіх даступных каманд):
>> Дапамажыце [доўгі спіс частак пра даведку варта]і для канкрэтных каманд:
>> Дапамажыце БПФ [падказку на функцыю БПФ варта].Папера дакументацыя знаходзіцца на шэльфе ў дакуменце кампактным чорным кніг і лакальна згенераваных навучальныя дапаможнікі даступныя і выкарыстоўваюцца ў курсах.
выхадабо увёўшы
выхаду Matlab радка.
добры MATLAB <script.m> & & script.out
Затым можна выканаць іншую працу на машыне або з выхадам у той час як Matlab перамолвае вашы праграмы. Вось тлумачэнне паслядоўнасці каманд вышэй.
Кароткая інструкцыя па Matlab даступны ў наступным вузле інфармацыя ў гэтым файле. (Touch "н", каб перайсці туды цяпер, ці вярнуцца да меню ў верхні вузел для гэтага файла.)
Гэта інтэрактыўнае ўвядзенне ў MATLAB. Я прадставіў паслядоўнасць каманд для ўводу цалі пазначэнне RET азначае, што вы павінны ўвесці "вяртанне" ключ, гэта невідавочнае пасля каманды.
Выхаваць з MATLAB з радка аперацыйнай сістэмы
Лабараторыя%Вы павінны ўвесці MATLAB
Лабараторыя% MATLAB RETГэта будзе сапраўдны радку
>>Цяпер вы знаходзіцеся ў MATLAB.
Калі вы выкарыстоўваеце сістэмы X Window на працоўных станцыях дэпартамента матэматыкі, то вы таксама можаце пачаць MATLAB з галоўнага меню, абраўшы "MATLAB" ад "Math прыкладання" падменю. Акно павінна з'явіцца і пачаць MATLAB. Пры запуску MATLAB пад акном сістэмы, будзь вы пачынаеце з меню або запрашэнне сістэмы, маленькі лагатып MATLAB з'явіцца ўсплывальнае акно, пакуль праграма загрузкі і знікае, калі MATLAB гатовы да выкарыстання.
Калі вы будзеце гатовыя выйсці, тыпу выхаду
>> Выхад RETУ ходзе кіраўніцтва, калі вы затрымаліся на тым, што каманда азначае тып
>> Дапамажыце <command name> RET, А затым паспрабуйце каманду.
Вы павінны запісаць вынікі каманды і эксперыменты ў запісной кніжцы.
Заўвага: У залежнасці ад інфармацыі чытача Вы выкарыстоўваеце для навігацыі гэтага кіраўніцтва вы зможаце выразаць і ўстаўляць шмат прыкладаў непасрэдна ў Matlab.
рандаў (7)
Вы можаце згенераваць выпадковых матрыц іншых памераў і атрымаць даведку па камандзе рандаў ў MATLAB:
рандаў (2,5) дапамагчы рандаў
Іншая адмысловая матрыца, званая матрыцай Гільберта, з'яўляецца стандартным прыкладам у лікавым лінейнай алгебры.
Hilb (5) дапамагчы Hilb
5 на 5 магічны квадрат даецца наступная каманда:
магія (5) дапамогу магіюМагічны квадрат ўяўляе сабой квадратную матрыцу якая мае роўныя сумы па ўсіх яе радкоў і слупкоў. Мы будзем выкарыстоўваць матрычнага множання, каб праверыць гэта ўласцівасць крыху пазней.
Некаторыя з стандартных матрыц з лінейнай алгебры лёгка выраблена:
eye(6) zeros(4,7) ones(5)
Вы таксама можаце будаваць матрыцы самастойна з любой запісы, якія вы захочаце.
[1 2 3 5 Ліпеня 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [1 2 3 4 RET RET чэрвеня 5]
[Звярніце ўвагу, што калі вы выкарыстоўваеце выразаць і ўставіць асаблівасцямі аконнай сістэмы ці рэдактара, каб скапіяваць гэтыя прыклады ў Matlab, то вы не павінны выкарыстоўваць выразання і ўстаўкі і апошняй радкі вышэй. Тып яе ад рукі, дакранаючыся клавішу Увод, дзе вы бачыце RET і праверце, ці ёсць зварот карэткі мае ніякага значэння ў выхадны Matlab.]
Matlab сінтаксісам зручна для заблакаваных матрыц:
[Глаз (2); нулі (2)] [вачэй (2); нулі (3)] [вачэй (2), з іх (2,3)]
Хто-небудзь з апошніх трох прыкладаў вырабляюць паведамленні аб памылках? У чым праблема?
пі EPS EPS дапамагчы
У любы час вы хочаце ведаць, актыўных зменных, якія вы можаце выкарыстоўваць, які:
, Якія дапамагаюць хто
Пераменная анс будзе сачыць за апошні выхад, які не быў прызначаны на іншую зменную.
магія (6) анс х = анс х = [х, вока (6)] х
Так як вы стварылі новую зменную х, ён павінен з'явіцца ў якасці актыўных зменных.
хто
Каб выдаліць зменную, паспрабуйце наступнае:
ясна хх хто
= Магіі (4)
Вазьміце транспонированная:
"
Заўважым, што калі матрыца мае комплексных лікаў у выглядзе запісаў, то функцыя Matlab прымаючы да 'будзе вылічыць транспонированная спалучанае а не транспонированная А.
Іншыя арыфметычныя аперацыі лёгка выканаць.
3 * - + (-Ла) б = тах () макс (б)
Некаторыя Matlab функцыі могуць вяртаць больш аднаго значэння. У выпадку max інтэрпрэтатар вяртае максімальнае значэнне, а таксама індэкс слупка, дзе адбываецца максімальнае значэнне.
[Т, я] = тах (б) мін () б = 2 * тыя () * БМы можам выкарыстоўваць матрычнага множання і праверыць "чароўныя" ўласцівасці магічных квадратаў.
= Магіі (5)
Коммерсанта = тыя (5,1)
* Б
V = тыя (1,5)
у *
Matlab мае канвенцыі, у якой кропкай перад аперацыяй звычайна змяняецца аперацыі. У выпадку множання, a.*b будзе выконваць пачатковага шляхам уводу множанне замест звычайнага матрычнага множання.
a.*b (there is a dot there!) x = 5 x^2 a*a a^2 a.^2 (another dot) Triu () трлн (а) дыяганаль () дыяганаль (дыяганаль (а)) з = рандаў (4,5) памеру (с) [т, п] = памер (с) м d=.5-c
There are many functions which we applyдля Скалярыя, Matlab можа прымяняцца як да Скалярыя і матрыц.
грэх (г) ехр (г) часопіс (г) ABS (г)
Matlab мае функцыі для акруглення лікаў з якая плавае коскі ў цэлыя лікі. Яны round , fix, ceil , and floor.
The next few examples work through this set of commands and яшчэ пару арыфметычных аперацый.
F = [-. 5 0,1 0,5] тура (е) Fix (F) столі (е) паверх (е) сума (е) прадуктаў (е)
a=[1 0 1 0] b=[1 1 0 0] a==b a<=b ~a a&b a & ~a a | b a | ~a
Існуе функцыя дазваляе вызначыць, калі матрыца мае па крайняй меры адзін ненулявое элемент, any, а таксама функцыю, каб вызначыць, калі усе запісы выдатныя ад нуля, all.
a any(a) c=zeros(1,4) d=ones(1,4) any(c) all(a) all(d) e=[a',b',c',d'] any(e) all(e) any(all(e))
x=-2:1 length(x) -2:.5:1 -2:.2:1 a=magic(5) a(2,3)
Цяпер мы будзем выкарыстоўваць абазначэнне тоўстай кішкі, каб выбраць калонку a.
a(2,:) a(:,3) a a(2:4,:) a(:,3:5) a(2:4,3:5) a(1:2:5,:)
Вы можаце змясціць вектар у радку ці слупку пазіцыі ў a.
a(:,[1 2 5]) a([2 5],[2 4 5])
Вы таксама можаце зрабіць прысвойвання выкарыстаннем вектара або матрыцы.
b=rand(5) b([1 2],:)=a([1 2],:) a(:,[1 2])=b(:,[3 5]) a(:,[1 5])=a(:,[5 1]) a=a(:,5:-1:1)
Калі вы ўставіць 0-1 вэктару ў калонцы пазіцыі, то калоны, якія адпавядаюць 1, адлюстроўваюцца.
v=[0 1 0 1 1] a(:,v) a(v,:)
Гэта быў прыклад з асноўных функцый MATLAB і метады матрыцы маніпуляцыі. У канцы падручніка ёсць спіс функцый. Функцыі, якія вы мелі ў распараджэнні будзе некалькі адрознівацца ад версіі да версіі MATLAB. Увёўшы
helpВы атрымаеце доступ да апісанняў ўсіх функцый Matlab.
Вы, магчыма, выявілі, што ў цяперашні час MATLAB адчувальная да рэгістра, гэта значыць
"a" is not the same as "A."Калі гэта апынецца раздражненне, каманды
casesenбудзе перамыкаць рэгістр і выключэнні.
Дысплей MATLAB паказвае толькі 5 лічбаў у рэжыме па змаўчанні. Справа ў тым, што MATLAB заўсёды трымае і вылічаецца ў падвойнай дакладнасцю 16 знакаў пасля коскі і акругляе дысплей 4 лічбы. Каманда
format longпераключыцца на паказ ўсіх 16 лічбаў і
Фармат кароткіхвернецца ў кароткія праглядаў. Акрамя таго, можна пераключацца назад і наперад у навуковых дысплей з пазначэннямі каманд
Фармат кароткіх электроннайі
Фармат доўга электроннай
Гэта не заўсёды неабходна для MATLAB для адлюстравання вынікаў каманды на экран. Калі вы не жадаеце матрыцы адлюстроўваецца, паставіць кропку з коскай пасля яго,;. Калі MATLAB гатовы прыступіць, радкі>> з'явіцца. Паспрабуйце гэта на матрыцы прама цяпер.
Часам вы патрацілі шмат часу на стварэнне матрыц падчас сеансу MATLAB, і вы хацелі б выкарыстоўваць гэтыя ж матрыцы ў вашай наступнай сесіі. Вы можаце захаваць гэтыя значэнні ў файл, увядзіце
захаванне файла
Гэта стварае файл
filename.mat, Які змяшчае значэння зменных з вашай сесіі. Калі вы не хочаце, каб захаваць усе зменныя Ёсць два варыянты. Адзін з іх, каб ачысціць ад зменных з дапамогай каманды
ясна ABCякія здымуць зменных, У, С. Іншы варыянт складаецца ў выкарыстанні каманды
захаваць хугшто дазволіць зэканоміць зменных х, у, г у файле filename.mat. Зменныя могуць быць перагружаны ў адной з будучых сесій, увёўшы
нагрузкі файла
Калі вы будзеце гатовыя, каб раздрукаваць вынікі сесіі, вы можаце захаваць вынікі ў файл і раздрукаваць файл з аперацыйнай сістэмы з дапамогай "друк" каманда падыходзіць для вашай аперацыйнай сістэмы. Файл ствараецца з дапамогай каманды
Дзённік файлаПасля таго, як імя файла было ўстаноўлена вы можаце перамыкацца дзённік з камандамі
дзённікуі
Дзённік зГэта будзе капіяваць усё, што ідзе на экране (акрамя графікі) ва ўказаны файл. Так як гэта звычайны тэкставы файл, вы можаце адрэдагаваць яго пазней. Абмеркаванне раздрукаваць графікі адкладаецца на праект "Графіка", дзе MATLAB ў графічныя каманды прадстаўлены.
Некаторыя з вас могуць быць пашчасціла выкарыстоўваць Macintosh або кампутара Сонца з аконную сістэму, што дазваляе хутка ўваходзіць і выходзіць з MATLAB для рэдагавання, друку або іншых працэсаў на сістэмным узроўні. Для тых з вас, хто не так пашанцавала, MATLAB мае асаблівасць, якая дазваляе зрабіць некаторыя з гэтых задач прама з MATLAB. Давайце выкажам здагадку, што вы хочаце адрэдагаваць файл з імем myfile.m і што ваш рэдактар выконваецца на каманду-е выд. Каманда MATLAB
!ed myfile.mАдкрыецца рэдактар і зараз вы можаце працаваць у ёй, як вы гэта звычайна робіце. Відавочна, што клічнік найважнейшай асаблівасцю тут. Калі вы скончыце рэдагаванне, выйдзеце з рэдактара, як вы гэта звычайна робіце, і вы выявіце, што вы вярнуліся ў сеансе MATLAB. Вы можаце выкарыстоўваць! са шматлікімі камандамі аперацыйнай сістэмы.
MATLAB з'яўляецца мовай праграмавання. Ствараючы файл з пашырэннем. М вы можаце лёгка пісаць і запускаць праграмы. Калі б вы стваралі myfile.m файл праграмы ў MATLAB мову, то вы можаце зрабіць каманду MyFile з MATLAB і яна будзе працаваць, як і любы іншы функцыі MATLAB. Вам не трэба скампіляваць праграму з MATLAB з'яўляецца тлумачэння (не кампілюецца) мова. Такі файл называецца м-файл.
Я збіраюся апісаць асноўныя канструкцыі праграмавання. Існуюць і іншыя канструкцыі даступныя, калі Вы авалодаеце гэтым вы зможаце пісаць зразумелыя праграмы.
Прызначэнне з'яўляецца метад дае значэнне зменнай. Вы ўжо бачылі гэта ў інтэрактыўным рэжыме. Будзем пісаць х = даць значэнне ў значэнне x. Вось кароткая праграма, ілюструе выкарыстанне заданне.
Калі Вашай функцыі r = Mod (r) % r = Mod (, r). Калі і r цэлыя лікі, то % r з'яўляецца цэлалікавых астатак пасля % Дзяленне на d. Калі а і Коммерсанта цэлалікавых матрыц, %, То г-матрыца рэшткі ад дзялення % Да адпаведнага запісаў. Параўнайце з REM. r =- r.* паверх (а / дз);
Вы павінны зрабіць файл з імем mod.m і ўвядзіце гэтую праграму менавіта так, як яно напісана. Цяпер назначце некаторага цэлага значэння і d. Працаваць
мода (г)Гэта павінна працаваць, як і любы ўбудаванай функцыі MATLAB. Тып
дапамагчы модаГэта павінна вырабляць пяць радкоў каментароў, якія ідуць% знакі. % Знакі ў цэлым сведчаць аб тым, што ў далейшым гэтая лінія каментар, які будзе праігнаравана, калі праграма выконваецца. MATLAB выводзіць на экран каментары, якія ідуць «функцыя» дэкларацыі ў верхняй часткі файла пры дапамозе каманды выкарыстоўваецца. Такім чынам, вы можаце спрыяць дапамагчы, закладзенага MATLAB, каб хутка вызначыць паводзіны функцыі. Тып
Тып модаГэта будзе спіс з усяго файла для вашага звесткі. Што гэта праграма онлайн значыць? Першая радок "аб'яву функцыі". У ёй імя функцыі (які заўсёды такой жа, як імя файла без пашырэння. М), ўваходных зменных (у дадзеным выпадку і г), і выхадныя зменныя (у дадзеным выпадку г) былі абвешчаныя. Далей ідуць "дапаможа каментары", які мы ўжо абмяркоўвалі. Нарэшце, мы падыходзім да мяса праграмы.
Зменнай т у цяперашні час прысвойваецца значэнне аб'явы.* паверх (а / д); аперацыі на правым баку прызначэння мае тое значэнне, якое вы толькі што практыкуе (/ з'яўляецца дзяленне) з "". значэнне пачатковага мудры аперацыя, у адрозненне ад матрыцы аперацыі. Нарэшце, ";" прадухіляе друк адказу на экране да заканчэння выканання. Можна паспрабаваць замяніць "," з "," і запусціць праграму зноў толькі, каб убачыць розніцу.
Галінаванне будаўніцтва
калі <condition>, <program> канцаУмова функцыі MATLAB звычайна, але не абавязкова са значэннямі 0 або 1 (пазней я распавяду, калі мы можам вар'іраваць ад такога патрабавання), і ўся канструкцыя дазваляе выкананне праграмы, на ўсялякі выпадак значэнне стану не роўна 0. Калі гэта значэнне роўна 0, кіраванне пераходзіць да наступнай праграмы будаўніцтва. Вы павінны мець на ўвазе, што MATLAB тычыцца == б і <= Ь як функцыі са значэннямі 0 або 1.
Часта гэтая канструкцыя распрацавана з
калі <condition1>, <program1> яшчэ <program2> канцаУ гэтым выпадку, калі ўмова роўна 0, то program2 выконваецца.
Іншы варыянт
калі <condition1>, <program1> ElseIf <condition2>, <program2> канецЦяпер, калі условие1 не роўна 0, то program1 выконваецца, калі условие1 роўны 0, а калі Условие2 не роўна 0, то program2 выконваецца, а ў адваротным выпадку кіраванне перадаецца на наступную канструкцыю. Вось кароткая праграма, каб паказаць галінавання.
function b=even(n) % b=even(n). If n is an even integer, then b=1 % otherwise, b=0. if mod(n,2)==0, b=1; else b=0; end
За цыкл будаўніцтва форму
для я = 1: п, <program>, канец
Тут мы будзем паўтараць праграму адзін раз для кожнага значэння індэкса i. Вось некалькі прыкладаў праграм. Першая матрыца дадатак.
function c=add(a,b)
% c=add(a,b). This is the function which adds
% the matrices a and b. It duplicates the MATLAB
% function a+b.
[m,n]=size(a);
[k,l]=size(b);
if m~=k | n~=l,
r='ERROR using add: matrices are not the same size';
return,
end
c=zeros(m,n);
for i=1:m,
for j=1:n,
c(i,j)=a(i,j)+b(i,j);
end
end
Наступная праграма перемножения матрыц.
function c=mult(a,b)
% c=mult(a,b). This is the matrix product of
% the matrices a and b. It duplicates the MATLAB
% function c=a*b.
[m,n]=size(a);
[k,l]=size(b);
if n~=k,
c='ERROR using mult: matrices are not compatible
for multiplication',
return,
end,
c=zeros(m,l);
for i=1:m,
for j=1:l,
for p=1:n,
c(i,j)=c(i,j)+a(i,p)*b(p,j);
end
end
end
Для абодвух гэтых праграм, якія вы павінны былі заўважыць філіяла канструкцыю, якая сочыць за памерам справаздачнасці. Яна ўключана ў якасці паведамленні аб памылцы. У выпадку дадання, зробленая памылка, калі мы паспрабуем дадаць матрыцамі розных памераў, а ў выпадку мульт гэта з'яўляецца памылкай, калі памножыць матрыцу на левыя не маюць аднолькавы лік слупкоў, што колькасць Радкі матрыцы справа. Калі б гэтыя паведамленні не былі ўключаны і была дапушчана памылка, MATLAB перадалі б іншае паведамленне пра памылку сказаўшы, што паказчык перавышае памеры матрыцы. Вы заўважыце, у паведамленні пра памылку выкарыстанне адзінарных двукоссяў. Словы, акружаныя каціроўкі будуць разглядацца як тэкст і адправіў на экран у якасці значэння зменнай c. Пасля паведамлення вяртання каманды, якая з'яўляецца дырэктывай для адпраўкі кіраванне назад у функцыю, якая называецца дадаць ці вяртанне да каманднага радку. Я звычайна рэкамендую выкарыстоўваць толькі вяртання каманды ў кантэксце паведамленне пра памылку. Большасць MATLAB рэалізацыі маюць функцыю паведамлення аб памылцы, альбо errmsg або памылкі, якія вы, магчыма, аддадуць перавагу выкарыстоўваць.
У будаўніцтве
for i=1:n, <program>, endіндэкс г можа (на самай справе звычайна робіць), сустракаюцца ў некаторых істотным чынам ўнутры праграмы. MATLAB дазволіць вам паставіць любы вектар замест вектара 1: N у гэтым будаўніцтве.
Такім чынам, будаўніцтва
для я = [2,4,5,6,10], <program>, канеццалкам законна. У гэтым выпадку праграма будзе выконвацца 5 разоў, а значэння зменнай я падчас выканання, паслядоўна, 2,4,5,6,10. MATLAB распрацоўнікі пайшлі яшчэ далей. Калі вы можаце пакласці вектару, чаму б не паставіць матрыцу? Так, напрыклад,
для г = магіі (7), <program>, канецТаксама законна. Зараз праграма будзе выконвацца 7 (= лік слупкоў) разы, а значэння я, якія выкарыстоўваюцца ў праграме будзе паслядоўна калоны магіі (7).
У той час як цыкл будаўніцтва форму
у той час як <condition>, <program>, канецдзе ўмова функцыі MATLAB, як і галінаванне будаўніцтва. Праграма Праграма будзе выконвацца паслядоўна, пакуль значэнне ўмовы не роўна 0. Хоць завесы насіць няяўнай небяспека ў тым, што няма ніякай гарантыі, у цэлым, што вы будзеце выходзіць з цыклу. Вось прыклад праграмы, якая выкарыстоўвае у той час як цыкл.
function l=twolog(n) % l=twolog(n). l is the floor of the base 2 % logarithm of n. l=0; m=2; while m<=n l=l+1; m=2*m; end
Рекурсия вакольнымі канструкцыю, якая дазваляе функцыя выклікае сама сябе. Вось просты прыклад рекурсии
function y=twoexp(n) % y=twoexp(n). This is a recursive program for computing % y=2^n. The program halts only if n is a nonnegative integer. if n==0, y=1; else y=2*twoexp(n-1); end
Праграма мае галінаванне будаўніцтва ўбудаванымі Многія рэкурсіўных праграм робяць. Умова п == 0 з'яўляецца базай рекурсии. Гэта адзіны спосаб атрымаць праграму, каб спыніць, якая называе сябе. "Іншая" частка рекурсии. Звярніце ўвагу, як twoexp (п-1) адбываецца прама ў праграме, якая з'яўляецца вызначальным twoexp (п)! Сакрэт у тым, што ён называе меншае значэнне, п-1, і ён будзе працягваць рабіць гэта, пакуль не дабярэцца да п = 0. Паспяховае рекурсии кліча меншае значэнне.
Ёсць некалькі небяспек з дапамогай рекурсии. Першае, што, як у той час як завесы, гэта магчыма для функцыі называць сябе назаўсёды і ніколі не вяртацца адказ. Па-другое, рекурсия можа прывесці да залішняй разлікі, якія, хоць яны могуць спыніць, можа заняць шмат часу. Трэцяя небяспека ў тым, што ў той час як рэкурсіўнае праграмы працуе, яно мае патрэбу ў дадатковым прасторы для размяшчэння накладных расходаў рекурсии. У лікавых разліках на вельмі вялікіх сістэм памяці раўнанняў часта ў вялікай пашане, і яно не павінна быць выдаткавана на праграму накладныя выдаткі. З улікам усіх гэтых магчымасцяў, чаму дрэнна выкарыстоўваць рекурсию? Гэта не заўсёды дрэнна, і толькі ў руках неспрактыкаванага карыстача. Рэкурсіўнае праграмы можа быць прасцей пісаць і чытаць, чым нерекурсивных праграм. Некаторыя з будучых праектаў ілюструюць добрае і дрэннае выкарыстанне рекурсии.
Можна змясціць матрыцу функцыя як умова галінавання будаўніцтва або якое-то час цыклу. Такім чынам, ўмова можа быць матрыцай, як тыя, (2), нулі (2), ці вока (2). Як бы канструкцыю, падобную на
if <condition>, < program1>, else <program2>, endпаводзіць сябе, калі ўмова = вачэй (2)? Program1 будзе выконвацца, калі усе запісы стану не 0. Такім чынам, калі ўмова = магіі (2), program1 будзе выконвацца ў той час як пры выкананні ўмовы = вачэй (2) кантроль пяройдзе да "другой" бакі і program2 будзе выконвацца.
Праблематычна будаўніцтва адбываецца, калі ў вас ёсць
калі ~ = B, <program>, канец.Вы хацелі б праграмы для выканання, калі матрыцы А і У адрозніваюцца на некаторыя запісы. Згодна з канвенцыяй, праграмы будзе выконвацца толькі калі яны адрозніваюцца ад усіх запісаў. Існуюць розныя спосабы абыйсці гэта. Адным з іх з'яўляецца будаўніцтва
калі A == B яшчэ <program>, канецякая перадасць кіраванне "яшчэ" частка, калі А і Ў адрозніваюцца па крайняй меры адну запіс. Іншая складаецца ў пераўтварэнні == B ў двайковай функцыі, выкарыстоўваючы ўсе (усе (== B)). Усярэдзіне ўсё стварае бінарны вектар, я - ай запіс 1, толькі калі я - й слупок такі ж, як я - м слупку B. па-за ўсіх вырабляе 1, калі ўсе элементы матрыцы вектарныя 1. Такім чынам, калі А і Ў адрозніваюцца па крайняй меры адзін запіс, то ўсё (усе (== B)) = 0. Будаўніцтва
калі ~ усе (усе (== B)), <program>, канецто паводзіць сябе жаданым чынам.
Па сутнасці, тое ж самае справядліва і для канвенцыі ў той час як будаўніцтва.
у той час як <condition>, <program>, канец.Праграма Праграма будзе выконвацца паслядоўна тых часоў, пакуль кожная запіс у стан не 0, і кіраванне перадаецца з цыклу, калі хаця б адзін запіс стану роўны 0.
Іншая праблема ўзнікае, калі ў вас ёсць конъюнкция умоў, як у
калі <condition1> & <Условие2>, <program>, канецВядома, праграма будзе выконвацца, калі абодва условие1 і Условие2 выдатныя ад нуля. Выкажам здагадку, што условие1 = 0 і Условие2 прычыны паведамленні аб памылцы. Гэта можа адбыцца,
я <= M & A (I, J) == 0дзе т-лік слупкоў матрыцы А. Калі я> т, то вы хацелі б прайсці кантроль, але так як (I, J) не мае сэнсу, калі я> т памылцы будзе выпуклыя ўверх. Тут Вы можаце укладваць умовах.
if i<=m,
if A(i,j)==0,
<program>
end
end
Скрыпт м-файл без абвяшчэння функцыі ў верхняй частцы. Скрыпт вядзе сябе па-рознаму. Пры ўводзе які вы атрымліваеце спіс зменных, якія ўступілі ў сілу на працягу бягучай сесіі. Выкажам здагадку, што х з'яўляецца адной з гэтых пераменных. Калі вы пішаце праграму з выкарыстаннем функцыі файл, і вы выкарыстоўваеце зменную х ўнутры праграмы, то праграма не будзе выкарыстоўваць значэння х з вашай сесіі (калі толькі х быў адным з ўваходных значэнняў у функцыі), а х будзе Значэнне адпаведнай праграмы. Больш таго, калі вы аб'яўляеце новага значэння для х, праграма не будзе змяняць значэнне х з сесіі. Гэта вельмі зручна, бо гэта азначае, што вы не павінны занадта турбавацца аб зменных сеансу у той час як ваша праграма выконваецца. Усё гэта адбылося з-за аб'явы функцыі. Калі вы не робіце, што абвяшчэнне функцыі, то зменныя ў сесіі могуць быць зменены. Часам гэта вельмі карысна, але я звычайна рэкамендую выкарыстоўваць функцыю файлаў.
Гэтыя некалькі саветаў аб праграмаванні і праграмаванне ў MATLAB, у прыватнасці.
1) Я заклікаю вас выкарыстаць водступ стыль, які вы бачылі ў названых праграм. Гэта робіць праграмы больш зручным для чытання, праграма сінтаксіс лягчэй праверыць, і гэта прымушае вас думаць з пункту гледжання пабудовы вашай праграмы ў блокі.
2) Паставіць шмат каментароў у вашай праграме, каб распавесці чытачу ў простым англійскай мове, што адбываецца. Калі-небудзь, што чытач будзе вам, і вы будзеце здзіўляцца, што вы зрабілі.
3) Змесціце паведамленні аб памылках у праграмах, як тыя вышэй. Па меры праходжання праз дадзенае кіраўніцтва, вашыя праграмы будуць будаваць адзін на аднаго. Паведамленні аб памылках дапамогуць вам адладкі будучых праграм.
4) Заўсёды структуры, на выхадзе, як быццам гэта будзе ўваход іншай функцыі. Напрыклад, калі ваша праграма «так-не" вытворчасці, не маюць яго вяртанне словы «так» і «не», а вяртаць 1 або 0, так што ён можа быць выкарыстаны ў якасці ўмовы для філіяла або ў той час як цыкл будаўніцтва ў будучыні.
5) У MATLAB, старайцеся пазбягаць цыклаў ў вашых праграмах. MATLAB аптымізавана для працы ўбудаваных функцый. Для параўнання, убачыць, наколькі хутчэй * На працягу мульт (A, B). Вы будзеце здзіўлены тым, колькі эканоміка можа быць дасягнута з дапамогай функцый MATLAB.
6) Калі ў вас узніклі праблемы напісаць праграму, атрымаць невялікую яго частка працуе і спрабуюць пабудаваць на гэтым. Са спасылкай на 5), напісаць праграму першага з завесамі, пры неабходнасці, а затым вярнуцца і палепшыць яго.
Matlab пастаўляецца з некалькімі дэманстрацыйная праграма. Выкарыстоўвайце help demos, каб даведацца больш аб гэтых (колькасць дэма будзе залежаць ад версіі Matlab ў вас ёсць).
Некаторыя з стандартнага дэма можа быць асабліва карысна для карыстальнікаў, якія з'яўляюцца пачаткоўцамі ў лінейнай алгебры:
intro < chol end function lu quit sprintf
help > clc eps global macro qz sqrt
demo = clear error grid magic rand startup
[ & clg eval hess max rcond string
] | clock exist hold memory real subplot
( ~ conj exit home mesh relop sum
) abs contour exp ident meta rem svd
. all cos expm if min return tan
, ans cumprod eye imag nan round text
; any cumsum feval inf nargin save title
% acos delete fft input norm schur type
! asin det filter inv ones script what
: atan diag find isnan pack semilogx while
' atan2 diary finite keyboard pause semilogy who
+ axis dir fix load pi setstr xlabel
- balance disp floor log plot shg ylabel
* break echo flops loglog polar sign zeros
\ casesen eig for logop prod sin
/ ceil else format ltifr prtsc size
^ chdir elseif fprintf ltitr qr sort
acosh demo hankel membrane print table1
angle demolist hds menu quad table2
asinh dft hilb meshdemo quaddemo tanh
atanh diff hist meshdom quadstep tek
bar eigmovie histogram mkpp rank tek4100
bench ergo hp2647 movies rat terminal
bessel etime humps nademo ratmovie toeplitz
bessela expm1 idft nelder readme trace
besselh expm2 ieee neldstep residue translate
besseln expm3 ifft nnls retro tril
blanks feval ifft2 null roots triu
cdf2rdf fft2 info num2str rot90 unmkpp
census fftshift inquire ode23 rratref vdpol
citoh fitdemo int2str ode45 rratrefmovie versa
cla fitfun invhilb odedemo rref vt100
compan flipx isempty orth rsf2csf vt240
computer flipy kron pinv sc2dc why
cond funm length plotdemo sg100 wow
conv gallery log10 poly sg200 xterm
conv2 gamma logm polyfit sinh zerodemo
corr getenv logspace polyline spline zeroin
cosh ginput matdemo polymark sqrtm
ctheorem gpp matlab polyval square
dc2sc graphon mean polyvalm std
deconv hadamard median ppval sun
addtwopi buttap cov fftdemo freqz kaiser specplot
bartlett butter decimate filtdemo fstab numf spectrum
bilinear chebap denf fir1 hamming readme2 triang
blackman chebwin detrend fir2 hanning remez xcorr
boxcar cheby eqnerr2 freqs interp remezdd xcorr2
yulewalk
>> help HELP topics: matlab/general - General purpose commands. matlab/ops - Operators and special characters. matlab/lang - Language constructs and debugging. matlab/elmat - Elementary matrices and matrix manipulation. matlab/specmat - Specialized matrices. matlab/elfun - Elementary math functions. matlab/specfun - Specialized math functions. matlab/matfun - Matrix functions - numerical linear algebra. matlab/datafun - Data analysis and Fourier transform functions. matlab/polyfun - Polynomial and interpolation functions. matlab/funfun - Function functions - nonlinear numerical methods. matlab/sparfun - Sparse matrix functions. matlab/plotxy - Two dimensional graphics. matlab/plotxyz - Three dimensional graphics. matlab/graphics - General purpose graphics functions. matlab/color - Color control and lighting model functions. matlab/sounds - Sound processing functions. matlab/strfun - Character string functions. matlab/iofun - Low-level file I/O functions. matlab/demos - The MATLAB Expo and other demonstrations. toolbox/chem - Chemometrics Toolbox toolbox/control - Control System Toolbox. fdident/fdident - Frequency Domain System Identification Toolbox fdident/fddemos - Demonstrations for the FDIDENT Toolbox toolbox/hispec - Hi-Spec Toolbox toolbox/ident - System Identification Toolbox. toolbox/images - Image Processing Toolbox. toolbox/local - Local function library. toolbox/mmle3 - MMLE3 Identification Toolbox. mpc/mpccmds - Model Predictive Control Toolbox mpc/mpcdemos - Model Predictive Control Toolbox mutools/commands - Mu-Analysis and Synthesis Toolbox.: Commands directory mutools/subs - Mu-Analysis and Synthesis Toolbox -- Supplement toolbox/ncd - Nonlinear Control Design Toolbox. nnet/nnet - Neural Network Toolbox. nnet/nndemos - Neural Network Demonstrations and Applications. toolbox/optim - Optimization Toolbox. toolbox/robust - Robust Control Toolbox. toolbox/signal - Signal Processing Toolbox. toolbox/splines - Spline Toolbox. toolbox/stats - Statistics Toolbox. toolbox/symbolic - Symbolic Math Toolbox. toolbox/wavbox - (No table of contents file) simulink/simulink - SIMULINK model analysis and construction functions. simulink/blocks - SIMULINK block library. simulink/simdemos - SIMULINK demonstrations and samples. toolbox/codegen - Real-Time Workshop For more help on directory/topic, type "help topic".
>> help elmat Elementary matrices and matrix manipulation. Elementary matrices. zeros - Zeros matrix. ones - Ones matrix. eye - Identity matrix. rand - Uniformly distributed random numbers. randn - Normally distributed random numbers. linspace - Linearly spaced vector. logspace - Logarithmically spaced vector. meshgrid - X and Y arrays for 3-D plots. : - Regularly spaced vector. Special variables and constants. ans - Most recent answer. eps - Floating point relative accuracy. realmax - Largest floating point number. realmin - Smallest positive floating point number. pi - 3.1415926535897.... i, j - Imaginary unit. inf - Infinity. NaN - Not-a-Number. flops - Count of floating point operations. nargin - Number of function input arguments. nargout - Number of function output arguments. computer - Computer type. isieee - True for computers with IEEE arithmetic. isstudent - True for the Student Edition. why - Succinct answer. version - MATLAB version number. Time and dates. clock - Wall clock. cputime - Elapsed CPU time. date - Calendar. etime - Elapsed time function. tic, toc - Stopwatch timer functions. Matrix manipulation. diag - Create or extract diagonals. fliplr - Flip matrix in the left/right direction. flipud - Flip matrix in the up/down direction. reshape - Change size. rot90 - Rotate matrix 90 degrees. tril - Extract lower triangular part. triu - Extract upper triangular part. : - Index into matrix, rearrange matrix.
>> help specmat Specialized matrices. compan - Companion matrix. gallery - Several small test matrices. hadamard - Hadamard matrix. hankel - Hankel matrix. hilb - Hilbert matrix. invhilb - Inverse Hilbert matrix. kron - Kronecker tensor product. magic - Magic square. pascal - Pascal matrix. rosser - Classic symmetric eigenvalue test problem. toeplitz - Toeplitz matrix. vander - Vandermonde matrix. wilkinson - Wilkinson's eigenvalue test matrix.
>> help elfun Elementary math functions. Trigonometric. sin - Sine. sinh - Hyperbolic sine. asin - Inverse sine. asinh - Inverse hyperbolic sine. cos - Cosine. cosh - Hyperbolic cosine. acos - Inverse cosine. acosh - Inverse hyperbolic cosine. tan - Tangent. tanh - Hyperbolic tangent. atan - Inverse tangent. atan2 - Four quadrant inverse tangent. atanh - Inverse hyperbolic tangent. sec - Secant. sech - Hyperbolic secant. asec - Inverse secant. asech - Inverse hyperbolic secant. csc - Cosecant. csch - Hyperbolic cosecant. acsc - Inverse cosecant. acsch - Inverse hyperbolic cosecant. cot - Cotangent. coth - Hyperbolic cotangent. acot - Inverse cotangent. acoth - Inverse hyperbolic cotangent. Exponential. exp - Exponential. log - Natural logarithm. log10 - Common logarithm. sqrt - Square root. Complex. abs - Absolute value. angle - Phase angle. conj - Complex conjugate. imag - Complex imaginary part. real - Complex real part. Numeric. fix - Round towards zero. floor - Round towards minus infinity. ceil - Round towards plus infinity. round - Round towards nearest integer. rem - Remainder after division. sign - Signum function.
>> help specfun Specialized math functions. besselj - Bessel function of the first kind. bessely - Bessel function of the second kind. besseli - Modified Bessel function of the first kind. besselk - Modified Bessel function of the second kind. beta - Beta function. betainc - Incomplete beta function. betaln - Logarithm of beta function. ellipj - Jacobi elliptic functions. ellipke - Complete elliptic integral. erf - Error function. erfc - Complementary error function. erfcx - Scaled complementary error function. erfinv - Inverse error function. expint - Exponential integral function. gamma - Gamma function. gcd - Greatest common divisor. gammainc - Incomplete gamma function. lcm - Least common multiple. legendre - Associated Legendre function. gammaln - Logarithm of gamma function. log2 - Dissect floating point numbers. pow2 - Scale floating point numbers. rat - Rational approximation. rats - Rational output. cart2sph - Transform from Cartesian to spherical coordinates. cart2pol - Transform from Cartesian to polar coordinates. pol2cart - Transform from polar to Cartesian coordinates. sph2cart - Transform from spherical to Cartesian coordinates.
>> help matfun Matrix functions - numerical linear algebra. Matrix analysis. cond - Matrix condition number. norm - Matrix or vector norm. rcond - LINPACK reciprocal condition estimator. rank - Number of linearly independent rows or columns. det - Determinant. trace - Sum of diagonal elements. null - Null space. orth - Orthogonalization. rref - Reduced row echelon form. Linear equations. \ and / - Linear equation solution; use "help slash". chol - Cholesky factorization. lu - Factors from Gaussian elimination. inv - Matrix inverse. qr - Orthogonal-triangular decomposition. qrdelete - Delete a column from the QR factorization. qrinsert - Insert a column in the QR factorization. nnls - Non-negative least-squares. pinv - Pseudoinverse. lscov - Least squares in the presence of known covariance. Eigenvalues and singular values. eig - Eigenvalues and eigenvectors. poly - Characteristic polynomial. polyeig - Polynomial eigenvalue problem. hess - Hessenberg form. qz - Generalized eigenvalues. rsf2csf - Real block diagonal form to complex diagonal form. cdf2rdf - Complex diagonal form to real block diagonal form. schur - Schur decomposition. balance - Diagonal scaling to improve eigenvalue accuracy. svd - Singular value decomposition. Matrix functions. expm - Matrix exponential. expm1 - M-file implementation of expm. expm2 - Matrix exponential via Taylor series. expm3 - Matrix exponential via eigenvalues and eigenvectors. logm - Matrix logarithm. sqrtm - Matrix square root. funm - Evaluate general matrix function.
>> help general General purpose commands. MATLAB Toolbox Version 4.2a 25-Jul-94 Managing commands and functions. help - On-line documentation. doc - Load hypertext documentation. what - Directory listing of M-, MAT- and MEX-files. type - List M-file. lookfor - Keyword search through the HELP entries. which - Locate functions and files. demo - Run demos. path - Control MATLAB's search path. Managing variables and the workspace. who - List current variables. whos - List current variables, long form. load - Retrieve variables from disk. save - Save workspace variables to disk. clear - Clear variables and functions from memory. pack - Consolidate workspace memory. size - Size of matrix. length - Length of vector. disp - Display matrix or text. Working with files and the operating system. cd - Change current working directory. dir - Directory listing. delete - Delete file. getenv - Get environment value. ! - Execute operating system command. unix - Execute operating system command & return result. diary - Save text of MATLAB session. Controlling the command window. cedit - Set command line edit/recall facility parameters. clc - Clear command window. home - Send cursor home. format - Set output format. echo - Echo commands inside script files. more - Control paged output in command window. Starting and quitting from MATLAB. quit - Terminate MATLAB. startup - M-file executed when MATLAB is invoked. matlabrc - Master startup M-file. General information. info - Information about MATLAB and The MathWorks, Inc. subscribe - Become subscribing user of MATLAB. hostid - MATLAB server host identification number. whatsnew - Information about new features not yet documented. ver - MATLAB, SIMULINK, and TOOLBOX version information.
>> help funfun Function functions - nonlinear numerical methods. ode23 - Solve differential equations, low order method. ode23p - Solve and plot solutions. ode45 - Solve differential equations, high order method. quad - Numerically evaluate integral, low order method. quad8 - Numerically evaluate integral, high order method. fmin - Minimize function of one variable. fmins - Minimize function of several variables. fzero - Find zero of function of one variable. fplot - Plot function. See also The Optimization Toolbox, which has a comprehensive set of function functions for optimizing and minimizing functions.
>> help polyfun Polynomial and interpolation functions. Polynomials. roots - Find polynomial roots. poly - Construct polynomial with specified roots. polyval - Evaluate polynomial. polyvalm - Evaluate polynomial with matrix argument. residue - Partial-fraction expansion (residues). polyfit - Fit polynomial to data. polyder - Differentiate polynomial. conv - Multiply polynomials. deconv - Divide polynomials. Data interpolation. interp1 - 1-D interpolation (1-D table lookup). interp2 - 2-D interpolation (2-D table lookup). interpft - 1-D interpolation using FFT method. griddata - Data gridding. Spline interpolation. spline - Cubic spline data interpolation. ppval - Evaluate piecewise polynomial.
>> help ops Operators and special characters. Char Name HELP topic + Plus arith - Minus arith * Matrix multiplication arith .* Array multiplication arith ^ Matrix power arith .^ Array power arith \ Backslash or left division slash / Slash or right division slash ./ Array division slash kron Kronecker tensor product kron : Colon colon ( ) Parentheses paren [ ] Brackets paren . Decimal point punct .. Parent directory punct ... Continuation punct , Comma punct ; Semicolon punct % Comment punct ! Exclamation point punct ' Transpose and quote punct = Assignment punct == Equality relop <,> Relational operators relop & Logical AND relop | Logical OR relop ~ Logical NOT relop xor Logical EXCLUSIVE OR xor Logical characteristics. exist - Check if variables or functions are defined. any - True if any element of vector is true. all - True if all elements of vector are true. find - Find indices of non-zero elements. isnan - True for Not-A-Number. isinf - True for infinite elements. finite - True for finite elements. isempty - True for empty matrix. isreal - True for real matrix. issparse - True for sparse matrix. isstr - True for text string. isglobal - True for global variables.
>> help lang Language constructs and debugging. MATLAB as a programming language. script - About MATLAB scripts and M-files. function - Add new function. eval - Execute string with MATLAB expression. feval - Execute function specified by string. global - Define global variable. nargchk - Validate number of input arguments. lasterr - Last error message. Control flow. if - Conditionally execute statements. else - Used with IF. elseif - Used with IF. end - Terminate the scope of FOR, WHILE and IF statements. for - Repeat statements a specific number of times. while - Repeat statements an indefinite number of times. break - Terminate execution of loop. return - Return to invoking function. error - Display message and abort function. Interactive input. input - Prompt for user input. keyboard - Invoke keyboard as if it were a Script-file. menu - Generate menu of choices for user input. pause - Wait for user response. uimenu - Create user interface menu. uicontrol - Create user interface control. Debugging commands. dbstop - Set breakpoint. dbclear - Remove breakpoint. dbcont - Resume execution. dbdown - Change local workspace context. dbstack - List who called whom. dbstatus - List all breakpoints. dbstep - Execute one or more lines. dbtype - List M-file with line numbers. dbup - Change local workspace context. dbquit - Quit debug mode. mexdebug - Debug MEX-files.
>> help plotxy Two dimensional graphics. Elementary X-Y graphs. plot - Linear plot. loglog - Log-log scale plot. semilogx - Semi-log scale plot. semilogy - Semi-log scale plot. fill - Draw filled 2-D polygons. Specialized X-Y graphs. polar - Polar coordinate plot. bar - Bar graph. stem - Discrete sequence or "stem" plot. stairs - Stairstep plot. errorbar - Error bar plot. hist - Histogram plot. rose - Angle histogram plot. compass - Compass plot. feather - Feather plot. fplot - Plot function. comet - Comet-like trajectory. Graph annotation. title - Graph title. xlabel - X-axis label. ylabel - Y-axis label. text - Text annotation. gtext - Mouse placement of text. grid - Grid lines. See also PLOTXYZ, GRAPHICS.
>> help plotxyz Three dimensional graphics. Line and area fill commands. plot3 - Plot lines and points in 3-D space. fill3 - Draw filled 3-D polygons in 3-D space. comet3 - 3-D comet-like trajectories. Contour and other 2-D plots of 3-D data. contour - Contour plot. contour3 - 3-D contour plot. clabel - Contour plot elevation labels. contourc - Contour plot computation (used by contour). pcolor - Pseudocolor (checkerboard) plot. quiver - Quiver plot. Surface and mesh plots. mesh - 3-D mesh surface. meshc - Combination mesh/contour plot. meshz - 3-D Mesh with zero plane. surf - 3-D shaded surface. surfc - Combination surf/contour plot. surfl - 3-D shaded surface with lighting. waterfall - Waterfall plot. Volume visualization. slice - Volumetric visualization plots. Graph appearance. view - 3-D graph viewpoint specification. viewmtx - View transformation matrices. hidden - Mesh hidden line removal mode. shading - Color shading mode. axis - Axis scaling and appearance. caxis - Pseudocolor axis scaling. colormap - Color look-up table. Graph annotation. title - Graph title. xlabel - X-axis label. ylabel - Y-axis label. zlabel - Z-axis label for 3-D plots. text - Text annotation. gtext - Mouse placement of text. grid - Grid lines. 3-D objects. cylinder - Generate cylinder. sphere - Generate sphere. See also COLOR, PLOTXY, GRAPHICS.
>> help strfun Character string functions. General. strings - About character strings in MATLAB. abs - Convert string to numeric values. setstr - Convert numeric values to string. isstr - True for string. blanks - String of blanks. deblank - Remove trailing blanks. str2mat - Form text matrix from individual strings. eval - Execute string with MATLAB expression. String comparison. strcmp - Compare strings. findstr - Find one string within another. upper - Convert string to uppercase. lower - Convert string to lowercase. isletter - True for letters of the alphabet. isspace - True for white space characters. strrep - Replace a string with another. strtok - Find a token in a string. String to number conversion. num2str - Convert number to string. int2str - Convert integer to string. str2num - Convert string to number. mat2str - Convert matrix to string. sprintf - Convert number to string under format control. sscanf - Convert string to number under format control. Hexadecimal to number conversion. hex2num - Convert hex string to IEEE floating point number. hex2dec - Convert hex string to decimal integer. dec2hex - Convert decimal integer to hex string.