operator buclă în timp ce exemple în matlab. MATLAB for loop - Tutorial ilustrat MatLab > Bazele programării > For...bucle de final. Bucle ca while...end. Cerințe pentru proiectarea lucrărilor de laborator

Departament: Tehnologii informaţionale

PROGRAMARE INMATLAB


OperatoriMATLAB

· Instrucțiuni de buclă

Ciclupentru

Sintaxă

count=start:step:final

comenzi MATLAB

Descriere

count este o variabilă de buclă,

start este valoarea sa inițială,

final este valoarea sa finală,

pas - pasul cu care numărul este incrementat de fiecare dată când intră în buclă

bucla se termină de îndată ce valoarea numărului devine mai mare decât finală.

Exemplu

Să fie necesar să se obțină o familie de curbe pentru x€ , care este dată de o funcție în funcție de parametru

y (x, a) \u003d e-ax sin x,

pentru valorile parametrilor a de la -0,1 la 0,1. Mai jos este o listă a unui program de fișiere pentru ieșirea unei familii de curbe.

Lista de programe

x = ;

pentru a = -0,1:0,02:0,1

y = exp(-a*x).*sin(x);

Ca urmare a execuției programului, va apărea o fereastră grafică care conține familia necesară de curbe.

Cicluin timp ce

Sintaxă

condiția buclei while

comenzi MATLAB

Descriere

Bucla rulează atâta timp cât condiția (adevărată) a buclei este adevărată. Următoarele operații relaționale sunt permise pentru a seta condiția pentru execuția unei bucle:

Condițiile mai complexe sunt specificate folosind operatori logici. Operatorii logici sunt prezentați în tabelul următor


Exemplu

Operatori de sucursale

Operator condiționatdacă

Sintaxă

dacă starea

comenzi MATLAB

Descriere

Dacă condiția este adevărată, atunci comenzile MATLAB plasate între if și end sunt executate, iar dacă condiția nu este adevărată, atunci trecerea la comenzile situate după sfârșit.

Exemplu

Operator condiționatelseif

Sintaxă

dacă condiția1

starea elseif2

………………………

starea elseif

Descriere

În funcție de îndeplinirea uneia sau alteia condiții, ramura corespunzătoare a programului funcționează, dacă toate condițiile sunt false, atunci se execută comenzile plasate după else.

Exemplu

Operatorintrerupator

Sintaxă

comutator variabil

valoarea cazului 1

valoarea cazului2

……………………

caz valuen


Fiecare ramură este definită de o instrucțiune case, trecerea la aceasta se efectuează atunci când variabila instrucțiune switch ia valoarea specificată după caz ​​sau una dintre valorile din lista de case. După executarea oricăreia dintre ramuri, comutatorul iese, în timp ce valorile specificate în alte cazuri nu mai sunt verificate. Dacă nu există valori adecvate pentru variabilă, atunci ramura programului corespunzătoare altfel este executată.

Exemplu

Se întrerupe bucla. Situații excepționale.

Operatorpauză

Sintaxă

Instrucțiunea break este folosită pentru a organiza calcule ciclice: pentru...sfârșit, în timp ce...sfârșit. Când starea

dacă starea

instrucțiunea break încheie bucla (for sau while) și sunt executate instrucțiunile care sunt situate pe liniile care urmează finalului. Pentru bucle imbricate, break iese din bucla interioară.

Gestionarea excepțiilor, operatorîncercacaptură

Sintaxă

declaraţii a căror executare

poate duce la o eroare

instructiunile de executat

când apare o eroare într-un bloc

între încercare și prindere

Descriere

Construcția try...catch vă permite să ocoliți situații excepționale (erori care duc la terminarea programului, de exemplu, accesarea unui fișier inexistent) și să luați unele măsuri dacă apar.

Exemplu

Funcții de service

disp afișează textul sau valoarea unei variabile în fereastra de comandă

intrare- solicită intrare de la tastatură. Folosit la crearea aplicațiilor cu o interfață de linie de comandă.

eval execută conținutul unui șir sau al unei variabile șir, cum ar fi comenzile MATLAB

clar- Elimina variabilele mediului de lucru.

dinlc- șterge fereastra de comandă

Pentru mai multe informații despre aceste și alte funcții, rulați pe linia de comandă

Ajutornume_funcție


Sarcini pentru munca de laborator

Numărul unei anumite opțiuni de sarcină este determinat de profesor.

Sarcina numărul 1

Această sarcină implică găsirea unui polinom de interpolare algebrică de grad n pentru un anumit set de date: P n(X) .

Obiectiv:

Este necesar să se scrie un program pentru calcularea coeficienților unui polinom de interpolare algebrică P n(X)= A 0 + A 1 X+ … + un n x n.

Instructiuni metodice:

0 1 2 3

Xi

1,2 1,4 1,6 1,8
8,3893 8,6251 8,9286 8,9703

Cote A 0 , A 1 , …, un n se determină din soluția sistemului de ecuații:

Aici neste ordinul polinomului de interpolare,

n+1 este numărul de perechi date de puncte ( X, y),

A 0 , A 1 ,… un n sunt coeficienții doriti ai polinomului P n(X)= A 0 + A 1 X+ … + un n x n).

Cerințe de program

Stabiliți limite de linii , pe care se construiește polinomul de interpolare P(x)

· Cere n este numărul de segmente de interpolare (sau, echivalent, gradul polinomului)

Notă: x0, xn, n introdus de la tastatură.

· Pentru a obține date inițiale (X y)(numar de perechi de puncte (x i, y i), pe care se construiește polinomul de interpolare P(x)n1=n+1) furnizează:

ü Introduceți noduri plasate aleatoriu x i, i=0, n de la tastatură

ü Calculul nodurilor x i , i=0, n, corespunzând aranjamentului uniform al argumentului X pe segment

ü În paragrafe. 1,2 valori y i , i=0, n fie introdus de la tastatură (dacă funcția originală este necunoscută), fie calculat dintr-o funcție dată f(x). Expresia care definește funcția este introdusă de la tastatură și trebuie să respecte regulile de scriere a expresiilor în MATLAB

ü Introducerea datelor ( x i, y i, i=0, n) din fisier

Rezolvați un sistem de ecuații pentru a determina coeficienții polinomului P(x)

Construiți grafice ale funcției tabulare originale și ale polinomului P(x)

· Dacă datele inițiale sunt date ca funcție f(x), reprezentați grafic eroarea de interpolare /f(x) – P(x)/. Calculați valoarea modulo maximă a erorii de interpolare pe un interval dat.


Sarcina numărul 2

Interpolare spline

Obiectiv:

Este necesar să se creeze un program pentru calcularea coeficienților și construirea unei funcții spline S(x), „lipită” din bucăți de polinoame de ordinul 3 S i(X), care au o notație specială:

Funcția S i(X) definite pe segment

Cerințe de program

Când efectuați această lucrare, trebuie să:

Stabiliți limitele segmentului pe care este construită funcția spline S(x).

· Precizați n – numărul de segmente de interpolare, pe fiecare dintre care se construiește polinomul cubic Si(x).

· Notă: x0, xn, n sunt introduse de la tastatură.

Organizați introducerea datelor inițiale (x, y) (numărul de perechi de puncte (xi, yi), pe care este construită funcția spline S(x), n1=n+1), cu condiția:

ü Introducerea nodurilor situate arbitrar xi, i=0, n de la tastatură

ü Calculul nodurilor xi, i=0, n, corespunzătoare aranjamentului uniform al argumentului x pe segment

ü În paragrafe. 1,2 valorile yi, i=0, n sunt fie introduse de la tastatură (dacă funcția originală este necunoscută), fie calculate din funcția dată f(x). Expresia care definește funcția este introdusă de la tastatură și trebuie să respecte regulile de scriere a expresiilor în MATLAB

ü Introducerea datelor (xi, yi, i=0, n) dintr-un fișier

ü S1""(x0)=0, S3""(x3)=0

ü S1"(x0)=f "(x0), S3"(x3)=f "(x3)

ü S1""(x0)=f "(x0), S3""(x0)=f "(x3)

Pentru a determina coeficienții unei spline cubice naturale (condiții la limită 1), este necesar să se rezolve următorul sistem de ecuații:

Coeficienții σ 0 =0, σ n =0

· Trasează grafice ale funcției originale și ale funcțiilor spline pentru toate cele trei tipuri de condiții la limită.

· Construiți grafice ale funcțiilor de eroare de interpolare spline f(x) – S(x) pentru toate cele trei tipuri de condiții la limită.

Notă:

În pachetul MATLAB, indecșii tablourilor unidimensionale și bidimensionale încep de la 1, nu de la 0. Luați în considerare acest lucru atunci când scrieți un program.


Sarcina numărul 3

Aproximarea unei funcții prin metoda celor mai mici pătrate (LSM).

Această sarcină presupune găsirea unei funcții de aproximare (polinom de gradul m) pentru un set de date, construit prin metoda celor mai mici pătrate (LSM).

Obiectiv:

Este necesar să se scrie un program pentru găsirea coeficienților polinomului φ (X)= A 0 + A 1 * X+… un n * x m prin metoda celor mai mici pătrate.

Să avem, de exemplu, următorul set de date:

Xi

1,2 1,4 1,6 1,8 2,0 2,2 2,4 2,6 2,8 3,0
8,3893 8,6251 8,9286 8,9703 9,1731 9,1784 8,8424 8,7145 8,3077 7,9611

Căutarea coeficienților necesari se efectuează după cum urmează:

Unde n - suma de puncte ( X, y),

m este gradul polinomului dorit,

A 0 , A 1 , …, a m sunt coeficienții doriti ( φ ( X )= A 0 + A 1 X + … + a m x m ).

Cerințe de program

Când efectuați această lucrare, trebuie să:

Stabiliți limitele segmentului pe care este construită funcția de aproximare φ(x)=a0+a1*x+… an * xm

Set m - gradul polinomului

· Notă: x1, xn, m sunt introduse de la tastatură.

Pentru a obține datele inițiale (x, y), pe care se construiește funcția de aproximare φ(x)=a0+a1*x+… an* x m, furnizați:

ü Introducerea nodurilor arbitrare xi, i=1, n de la tastatură

ü Calculul nodurilor xi, i=1, n, corespunzătoare aranjamentului uniform al argumentului x pe segment

ü În paragrafe. 1,2 valorile yi, i=1, n sunt fie introduse de la tastatură (dacă funcția originală este necunoscută), fie calculate din funcția dată f(x). Expresia care definește funcția este introdusă de la tastatură și trebuie să respecte regulile de scriere a expresiilor în MATLAB

ü Introducerea datelor (xi, yi, i=1, n) dintr-un fișier

Rezolvați un sistem de ecuații pentru a determina coeficienții polinomului φ(x)

Construiți grafice ale funcției date tabulare inițiale și ale polinomului φ(x)

· Dacă datele inițiale sunt date ca funcție f(x), reprezentați grafic eroarea de interpolare /f(x) – φ(x)/. Calculați valoarea modulo maximă a erorii de interpolare pe un interval dat.

La efectuarea ultimului element de pe segment luați cel puțin 500 de puncte pentru calcule


Cerințe pentru proiectarea lucrărilor de laborator

Raportul trebuie să conțină:

1. Enunțarea problemei

2. Textul programului

3. Rezultatele testelor

Notă Textele programului ar trebui să fie furnizate cu comentarii.


1. Anufriev I.E. Tutorial Matlab 5.3 / 6.x - Sankt Petersburg: BHV-Petersburg, 2003. - 736 p.: ill.

2. V.P. Dyakonov MATLAB 6.5 SPI/7 + Simulink 5/6 la matematică și modelare. Seria „Biblioteca profesională”. - M.: SOLON-Press, 2005. - 576 p.: ill.

3. Anufriev I.E., Smirnov A.B., Smirnova E.N. MathLab 7. - Sankt Petersburg: BHV-Petersburg, 2005. - 1104 p.: ill.

Limbajul informaticii tehnice

Milioane de ingineri și oameni de știință din întreaga lume folosesc MATLAB ® pentru a analiza și dezvolta sistemele și produsele care ne transformă lumea. Limbajul matriceal MATLAB este cel mai natural mod din lume de a exprima matematica computațională. Grafica încorporată facilitează vizualizarea și înțelegerea datelor. Mediul desktop încurajează experimentarea, explorarea și descoperirea. Aceste instrumente și capabilități MATLAB sunt toate testate riguros și proiectate pentru a funcționa împreună.

MATLAB vă ajută să vă aduceți ideile la viață dincolo de desktop. Puteți rula explorări pe seturi mari de date și puteți scala la clustere și nori. Codul MATLAB poate fi integrat cu alte limbi, permițându-vă să implementați algoritmi și aplicații în sisteme web, întreprinderi și industriale.

Începutul lucrărilor

Aflați elementele de bază ale MATLAB

Bazele limbajului

Sintaxă, indexare și procesare matrice, tipuri de date, operatori

Importă și analizează date

Import și export de date, inclusiv fișiere mari; preprocesarea datelor, vizualizare și cercetare

Matematica

Algebră liniară, diferențiere și integrare, transformate Fourier și alte matematici

Grafică

Grafică 2D și 3D, imagini, animație

Programare

Scripturi, funcții și clase

Crearea aplicației

Dezvoltare de aplicații cu App Designer, Programable Workflow sau GUIDE

Instrumente de dezvoltare software

Depanare și testare, organizare de proiecte mari, integrare cu sistemul de control al versiunilor, ambalare cu instrumente

Adesea, atunci când se organizează o buclă, este necesar să se repete peste valoarea contorului într-un interval dat de valori și cu un anumit pas de modificare. De exemplu, pentru a itera elementele unui vector (matrice), trebuie să organizați un numărător de la 1 la N cu un pas de 1, unde N este numărul de elemente ale vectorului. Pentru a calcula suma seriei, se specifică și un numărător de la a la b cu pasul de schimbare a pasului necesar. etc. Datorită faptului că astfel de sarcini sunt adesea întâlnite în practica de programare, pentru implementarea lor a fost propus un operator separat pentru buclă, ceea ce face mai ușoară și mai vizuală implementarea unei bucle cu un contor.

Sintaxa instrucțiunii for loop este următoarea:

pentru<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
Sfârșit

Să luăm în considerare munca acestui ciclu pe exemplul de implementare a algoritmului pentru găsirea valorii maxime a unui element dintr-un vector:

funcția search_max
a = ;
m = a(1); % valoarea maximă curentă
pentru i=1:lungime(a) % buclă de la 1 la sfârșitul vectorului c
% pasul 1 (implicit)
dacă m< a(i) % если a(i) >m,
m = a(i); % atunci m = a(i)
Sfârșit
sfârşitul % sfârşitul buclei for
disp(m);

În acest exemplu, bucla for setează contorul i și își schimbă valoarea de la 1 la 10 în trepte de 1. Rețineți că, dacă incrementul nu este specificat în mod explicit, acesta este implicit 1.

În exemplul următor, luați în considerare implementarea algoritmului de deplasare a elementelor vectoriale la dreapta, i.e. penultimul element se pune în locul ultimului, următorul se pune în locul penultimului și așa mai departe. la primul element:

coada de funcții
a = ;
disp(a);
pentru i=lungime(a):-1:2 % buclă de la 10 la 2 cu pasul -1
a(i)=a(i-1); Elemente de deplasare % ale vectorului a
sfârşitul % sfârşitul buclei for
disp(a);

Rezultatul programului

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

Exemplul de mai sus arată că pentru a implementa un ciclu cu un numărător de la o valoare mai mare la una mai mică, trebuie să specificați în mod explicit pasul, în acest caz, -1. Dacă acest lucru nu se face, bucla își va încheia imediat activitatea și programul nu va funcționa corect.

În concluzie, să luăm în considerare funcționarea operatorului de buclă for folosind exemplul de modelare a unei secvențe aleatoare cu legea schimbării

unde - coeficient de la -1 la 1; - variabilă aleatoare normală cu așteptare și varianță matematică zero

,

unde este varianța procesului aleator simulat. În acest caz, primul eșantion este modelat ca o variabilă aleatorie normală cu așteptări matematice și varianță zero. Programul de simulare are următoarea formă:

funcția modeling_x
r = 0,95; % coeficient de model
N = 100; % numărul de puncte simulate
ex = 100; % variația procesului
et = ex*(1-r^2); % varianță aditivă aleatorie
x = zerouri(N,1); % inițializa vectorul x
x(1) = sqrt(ex)*randn; % simulare a primului număr
pentru i=2:N bucla % de la 2 la N
x(i)=r*x(i-1)+sqrt(et)*randn; % Simulare JV
sfârşitul % sfârşitul buclei
plot(x); % afișare a SP sub formă de grafic

Când acest program este executat, va fi afișată implementarea secvenței aleatoare simulate.

Orez. 2.1. Rezultatul modelării unei secvențe aleatoare.

Lucrarea programului începe cu definirea variabilelor , (variabila ex în program) și pentru implementarea modelului specificat. Apoi se calculează varianța iar prima numărătoare a procesului aleator este modelată folosind funcția randn. Funcția randn generează variabile aleatoare normale cu medie zero și varianță unitară. Pentru a genera o variabilă aleatoare cu varianță, este suficient să înmulțiți o variabilă aleatoare cu varianță unitară cu , deoarece varianța este pătratul mediu al unei variabile aleatoare în raport cu așteptarea matematică. Ca rezultat, avem o linie de program

x(1) = sqrt(ex)*randn;

Apoi, bucla for este implementată cu un numărător i de la 2 la N cu un pas de 1. În interiorul buclei, restul N-1 eșantioane ale procesului aleator sunt simulate în conformitate cu formula de mai sus. Ultima linie a programului conține funcția plot(), care afișează secvența simulată pe ecran sub formă de grafic. Lucrările mai detaliate cu afișarea graficelor pe ecran vor fi discutate în capitolul următor.

bucle și condiții matlab: teorie și exemple

O zi buna. Astăzi vom vorbi despre bucle și condiții în Matlab. Materialul care este luat ca bază este Ajutorîn Matlab și câteva exemple simple, pe care le vom analiza împreună cu tine.

Condiții în MATLAB

Niciun limbaj de programare nu se poate lipsi de astfel de construcții precum condiții, despre asta vom vorbi:
Să începem cu sintaxa condiției dacăși uită-te la versiunea formală a intrării din ajutor:

Dacă expresie, enunțuri, sfârșit

Ce înseamnă:

Dacă Condiție, Acțiune, se încheie

Acum exemple:

x=1; y=61; if ((x >= 0,90) && (y >= 60)) disp("ok"); Sfârșit;

&& - operator logic de multiplicare („ȘI” logic).
Și iată un exemplu cu altfel:

x=1; y=50; if ((x >= 0,90) && (y >= 60)) disp("ok"); else disp("nu este corect") end;

Spre deosebire de primul exemplu, „nu este corect” va fi afișat aici.
Câteva cuvinte despre intrerupator. Formal în ajutor:

Sintaxă switch switch_expr case case_expr instrucțiune, ..., instrucțiune case (case_expr1, case_expr2, case_expr3, ...) instrucțiune, ..., instrucțiune altfel, ..., instrucțiune final

Mai cu picioarele pe pământ:

Sintaxă switch switch_expr case Valoare - 1 Acțiune caz (Valoare - 2, Valoare - 3, Valoare - 4, ...) Acțiune Altfel Sfârșit acțiune

Aceasta înseamnă că dacă variabila dată este egală cu valoarea în Valoarea cazului - 1, atunci acțiunea este efectuată când Valoarea cazului - 1 etc. Dacă niciunul dintre caz nu s-a potrivit, acțiunea este efectuată când in caz contrar.
Iată un exemplu:

Metoda = "Biliniar"; comutați mai jos(metodă) case ("liniar","bilinar") disp("Metoda este liniară") case "cubic" disp("Metoda este cubic") case "cel mai apropiat" disp("Metoda este cel mai apropiat") altfel disp( „Metodă necunoscută”)

Bucle în MATLAB

Acum să trecem la cicluri, începând cu pentru.
Acest lucru este scris în manual ca

Sintaxă pentru index = instrucțiuni de program de valori: final

În termeni profani, aceasta înseamnă:

Sintaxă pentru variabilă = valoare acțiune finală

Nu vom zăbovi în formularea oficială, este mai bine să înțelegem și exemplele preferate.

Pentru m = 1:10 m capăt

Așa arată cea mai comună utilizare pentru. În această buclă, pur și simplu scoatem valoarea lui m.
A doua modalitate folosind pasul ( Etapa)

Pentru s = 1,0: -0,1: 0,0 disp(s) end

În acest caz, ciclul pentru trece de la 1 la 0 în trepte de -0,1.
Altă opțiune:

Pentru s = sfârşitul disp(s).

În acest caz, variabila s va fi echivalat succesiv cu 1, 5, 8, 17 și va fi rezultat în mod corespunzător.
Și, de asemenea, cu pentru foarte convenabil pentru a scoate vectori. Aici:

Pentru e = eye(5) disp("Valoarea curentă a e:") disp(e) end

În acest exemplu, există un acces secvenţial la elementele vectorului e.

Ciclu in timp ce:
Formal în ajutor:

Sintaxă while expression program instrucțiuni: end

Impământat:

Sintaxă în timp ce acțiunea condiției se termină

Și să luăm imediat un exemplu (cum este folosit în viața reală).

Eps = 10; în timp ce eps > 1 eps = eps - 1 capăt

In timp ce se afla in stare ( eps > 1) este executată, bucla efectuează acțiunea

(eps=eps-1).
Tot in stare in timp ce puteți folosi operatori logici AND - && și SAU - || , scriind mai multe expresii booleene în condiție.

Dacă aveți întrebări despre articol, scrieți în comentarii.

codetown.com

bucle For, while în Matlab (Matlab)

Instrucțiunea for este concepută pentru a efectua un anumit număr de acțiuni repetitive. Cea mai simplă utilizare a instrucțiunii for este următoarea:

for count = start:step:finalComenzi MatLabSfârșit

Aici count este o variabilă de buclă, start este valoarea sa inițială, final este valoarea sa finală și pasul este pasul prin care numărul este incrementat de fiecare dată când intră în buclă. Bucla se termină de îndată ce valoarea numărului devine mai mare decât finală. Variabila buclă poate lua nu numai numere întregi, ci și valori reale ale oricărui semn

Bucla for este utilă pentru a efectua acțiuni similare repetate atunci când numărul lor este predeterminat. O buclă while mai flexibilă vă permite să ocoliți această limitare.

condiția buclei whileComenzi MatLabSfârșit

62. Ce echipă creează o carte M într-un editor de text Cuvânt asociat cu matlab?

Pornirea unei noi M-book Pentru a începe să scrieți o nouă M-book, trebuie să: 1) lansați editorul Word; 2) selectați în caseta de dialog Cuvânt opțiune Nou din meniu fişier; 3) în fereastra care apare pe ecran, selectați șablonul M-book. Ca urmare a acestor acțiuni, sistemul va porni MatLAB, iar vizualizarea meniului principal al editorului Word se va schimba oarecum - va apărea un nou meniu în el caiet. Aceasta va indica faptul că Cuvânt sistem atașat MatLAB. Dacă utilizați acum mouse-ul pentru a activa meniul caiet fereastră Cuvânt, pe ecran va apărea un meniu suplimentar

63. Ce comandă din editorul de text Word convertește textul într-o celulă de intrare MatLab?

alege o echipa Definiți celula de intrare(Define Input Cell) în meniu caiet(vezi Fig. 3.20), sau apăsați tastele; după aceea, aspectul liniei de comandă ar trebui să se schimbe - caracterele de comandă devin verde închis, iar comanda devine înconjurată de paranteze pătrate gri închis;@

64. Ce comandă din editorul de text Word asigură executarea comenzii MatLab într-o celulă?

selectați comanda Evaluate Cell cu mouse-ul sau apăsați o combinație de taste; rezultatul acestor acțiuni ar trebui să fie apariția imediat după textul comenzii a rezultatelor execuției sale de către sistemul MatLAB. Rezultatele execuției comenzii sunt afișate cu albastru și sunt cuprinse între paranteze drepte.

65. Ce comandă din editorul de text Word asigură executarea comenzilor MatLab în întreaga M-book?

Executarea comenzilor pentru toate celulele sau grupurile de celule din intrarea secțiunii se realizează utilizând elementul Evaluate Calc Zone și întregul M-book simultan - Evaluate M-book

66. Ce comandă din editorul de text Word asigură executarea automată a comenzilor MatLab în toate celulele la deschiderea unui M-book?

Comenzile pentru celulele care au stilul AutoInnit rulează imediat după deschiderea M-book-ului. Este util să includeți o comandă clară în prima astfel de celulă pentru a curăța mediul de lucru. Pentru a seta stilul AutoInit, utilizați elementul Define Autoinit Cell din meniul Notebook.

67. Ce butoane conține panoul Link Excel într-o foaie de calcul Excel când sunt conectate la MatLab?

68. Ce oferă comanda putmatrix?

Funcția MLPutMatrix este utilizată pentru a plasa date din celulele unei foi de lucru Excel într-o matrice a spațiului de lucru Matlab. Argumentele acestei funcții sunt numele variabilei, cuprinse între ghilimele și gama de celule Excel aferente acestei variabile

68. Ce oferă comanda getmatrix?

Operația inversă este efectuată de funcția MLGetMatrix, în timp ce argumentele acestei funcții sunt numele variabilei de mediu de lucru MatLab cu 22 de date, cuprinse între ghilimele, și gama de celule Excel unde vor fi plasate datele acestei variabile, de asemenea cuprinse între ghilimele.

70. Pentru ce este pachetul Simulink?

Sistemul Matlab include un pachet pentru modelarea sistemelor dinamice - Simulink. Acest pachet este nucleul unui pachet software interactiv conceput pentru modelarea matematică a sistemelor dinamice liniare și neliniare, reprezentat de diagrama bloc funcțională, numită S-model sau pur și simplu model

71. Ce bibliotecă Simulink conține surse de semnal?

Să construim cel mai simplu model al sursei unui semnal sinusoidal, care este alimentat la intrarea unui osciloscop virtual. Pentru a face acest lucru, faceți clic pe butonul pentru a deschide browserul bibliotecii și în partea din stânga a ferestrei de browser care apare, faceți clic pe secțiunea Surse(Surse), în timp ce pictogramele blocurilor incluse în această secțiune sunt afișate în partea dreaptă a ferestrei

72. Ce bibliotecă Simulink conține VI-uri de înregistrare?

osciloscop Scopul din secțiune Chiuvete.

73. Ce bibliotecă Simulink conține blocuri de diferențiere și integrare?

Continuous conține blocuri continue. Printre cele mai importante sunt blocurile de diferențiere Derivată și Integrator de integrare. Primul bloc realizează diferențierea numerică a semnalului de intrare; nu sunt introduși parametri pentru acest bloc. Al doilea bloc din fereastra de parametri conține mai multe câmpuri în care puteți seta constanta de integrare la ieșirea blocului în câmpul Condiție inițială

74. Ce bibliotecă Simulink conține blocuri elementare de calcul al funcției?

Fereastra bibliotecii Matematică conţine blocuri pentru efectuarea operaţiilor matematice

Blocurile pentru calcularea funcţiilor elementare includ trei blocuri: bloc de funcţii matematice Matematicăfuncţie, bloc de funcții trigonometrice Trigonometricfuncţieși blocul funcțional de rotunjire Funcția de rotunjire.

75. Câte valori ale parametrilor pasului sunt setate în Simulink când pasul de simulare este variabil?

Două opțiuni de rezolvare din câmpul Opțiuni de rezolvare sunt de mare importanță: tipul de soluție și metoda de soluție. Există două opțiuni pentru prima opțiune:

Rezolvatori cu pas variabil - soluție cu pas variabil;

Rezolvatorii cu pas fix sunt o soluție cu pas fix. În mod implicit, este setată opțiunea soluție pas variabil, când pasul scade automat odată cu creșterea ratei de modificare a rezultatelor și invers. Această metodă oferă în general rezultate mai bune decât simulările cu spațiere fixă, eliminând discrepanța în majoritatea cazurilor. Utilizarea modelării cu pas fix este de obicei folosită dacă aceasta se datorează specificului problemei care se rezolvă.

studfiles.net

pentru...buclele de sfârșit MatLab

Lecția 20
Instrumente de programare de bază
Tipuri de date de bază
Tipuri de programare
Dualitate de operatori, comenzi și funcții
Unele restricții
Fișiere M pentru scripturi și funcții
Structura și proprietățile fișierelor script
Starea variabilelor în funcții
Structura M-fișier-funcție
Stare variabilă și comanda globală
Utilizarea subfuncțiilor
Directoare private
Eroare la procesare

Trimiterea mesajelor de eroare
Funcția lasterr și gestionarea erorilor
Funcții de argument variabil
Funcții pentru numărarea numărului de argumente
Variabilele varargin și varargout
Comentarii
Caracteristici ale execuției m-fișierelor de funcții
Crearea codurilor P
Structuri de control
Intrare dialog
Operator condiționat
pentru...bucle de sfârșit
bucle ca while...end
Design comutator
încercați... prindeți... încheieți construcția
Crearea unei pauze în calcule
Conceptul de programare orientată pe obiecte
Crearea unei clase sau a unui obiect
Verificarea dacă un obiect aparține unei clase date
Alte caracteristici ale programarii orientate pe obiecte
Ce nou am învățat?

Buclele For...end sunt de obicei folosite pentru a organiza calcule cu un număr dat de bucle repetate. Structura unui astfel de ciclu este următoarea:

pentru vag=Expresie. Instruire. .... declarație finală

Expresia este cel mai adesea scrisă ca s:d:e, unde s este valoarea inițială a variabilei buclei var, d este incrementul acestei variabile și e este valoarea finală a variabilei de control, la care se termină bucla. . De asemenea, se poate scrie sub forma s:e (în acest caz d=l). Lista de instrucțiuni executate în buclă se termină cu instrucțiunea end.

Următoarele exemple ilustrează utilizarea unei bucle pentru a obține pătratele valorilor unei variabile de buclă:

» pentru 1=1:5 i^2. Sfârșit;

» pentru x=0:.25:1 X^2, final:

Instrucțiunea continue transferă controlul către următoarea iterație a buclei, sărind instrucțiunile care o urmează, iar într-o buclă imbricată, transferă controlul către următoarea iterație a buclei principale. Instrucțiunea break poate fi folosită pentru a întrerupe execuția unei bucle devreme. De îndată ce apare în program, bucla este întreruptă. Sunt posibile bucle imbricate, de exemplu:

Ca urmare a executării acestui ciclu (fișier for2.m), se formează matricea A:

Trebuie remarcat faptul că formarea matricelor utilizând operatorul: (colon) durează de obicei mult mai puțin timp decât folosind o buclă. Cu toate acestea, utilizarea ciclului este adesea mai clară și mai ușor de înțeles. MATLAB permite utilizarea unui tablou A de dimensiune ca variabilă de buclă thp.În acest caz, bucla este executată de câte ori există coloane în tabloul A, iar la fiecare pas variabila var este un vector corespunzător coloanei curente a tabloului A:

» A=

» pentru var=A; var, sfârşit

radiomaster.ru

Tutorial ilustrat despre MatLab › Noțiuni de bază despre programare › Pentru... bucle de final. Bucle ca while...end. [pagina - 364] | Tutoriale pentru pachete de matematică

Bucle ca pentru... sfârșit. Bucle ca while...end.

Tip cicluri pentru...sfarsit sunt de obicei folosite pentru a organiza calcule cu un număr dat de cicluri repetate. Structura unui astfel de ciclu este următoarea:

pentru var = Expresie. Instrucțiune..... Încheiați instrucțiunea

Expresia este cel mai adesea scrisă ca s:d:e, unde s este valoarea inițială a variabilei buclei var, d este incrementul acestei variabile și e este valoarea finală a variabilei de control, la atingerea căreia se termină bucla. De asemenea, se poate scrie sub forma s:e (în acest caz d=1). Lista de instrucțiuni executate în buclă se termină cu instrucțiunea end.

Următoarele exemple ilustrează utilizarea unei bucle pentru a obține pătratele valorilor unei variabile de buclă:

>> pentru 1 = 1: 5 i ^ 2 , sfârşitul ;

>> pentru x = 0:. 25:1X^2, sfârșit:

Operator continua transferă controlul la următoarea iterație a buclei, sărind peste instrucțiunile care o urmează, iar într-o buclă imbricată, transferă controlul către următoarea iterație a buclei principale. Operator pauză poate fi folosit pentru a termina prematur o buclă. De îndată ce apare în program, bucla este întreruptă. Sunt posibile bucle imbricate, de exemplu:

A(1.j) = i + j;

Ca urmare a acestui ciclu (file pentru2.m) se formează matricea A:

Trebuie remarcat faptul că formarea matricelor utilizând operatorul: (colon) durează de obicei mult mai puțin timp decât folosind o buclă. Cu toate acestea, utilizarea ciclului este adesea mai clară și mai ușor de înțeles. MATLAB permite utilizarea unui tablou A de dimensiune ca variabilă de buclă thp. În acest caz, bucla este executată de câte ori există coloane în tabloul A, iar la fiecare pas variabila var este un vector corespunzător coloanei curente a matricei A:

>> A = [ 1 2 3: 4 5 6 ]

>> pentru var = A; var , sfârşit

bucle ca while...end

Tip buclă in timp ce executat atâta timp cât este îndeplinită condiția:

în timp ce instrucțiunile de condiție se termină

Exemplu de aplicație în buclă in timp ce a fost deja citat. Încheierea timpurie a ciclurilor este implementată folosind operatori pauză sau continua.

Declarație condițională if

Cel mai simplu, sintaxa pentru această instrucțiune if este:

dacă<выражение>
<операторы>
Sfârșit

Vă atrag atenția asupra faptului că, spre deosebire de limbajele de programare moderne, un astfel de concept de operator compus nu este utilizat. Blocul instrucțiunii condiționate se termină în mod necesar cu cuvântul de serviciu end.

Următorul este un exemplu de implementare a funcției sign(), care returnează +1 dacă numărul este mai mare decât zero, -1 dacă numărul este mai mic decât zero și 0 dacă numărul este zero:

x=5;
dacă x > 0
disp(1);
Sfârșit
dacă x< 0
disp(-1);
Sfârșit
dacă x == 0
disp(0);
Sfârșit

Analiza exemplului dat arată că toate aceste trei condiții se exclud reciproc, i.e. când unul dintre ele este declanșat, nu este nevoie să le verificați pe celelalte. Implementarea unei astfel de logici va crește viteza de execuție a programului. Acest lucru poate fi realizat prin utilizarea constructului

dacă<выражение>
<операторы1>% executat dacă condiția este adevărată
altfel
<операторы2>% executat dacă condiția este falsă
Sfârșit

Atunci exemplul de mai sus poate fi scris după cum urmează:

X=5;
dacă x > 0
disp(1);
altfel
dacă x< 0
disp(-1);
altfel
disp(0);
Sfârșit
Sfârșit

Acest program verifică mai întâi dacă variabila x este pozitivă, iar dacă da, atunci valoarea 1 este afișată pe ecran și toate celelalte condiții sunt ignorate. Dacă prima condiție s-a dovedit a fi falsă, atunci execuția programului continuă altfel (în caz contrar) la a doua condiție, unde variabila x este verificată pentru negativitate, iar dacă condiția este adevărată, valoarea -1 este afișată pe Monitorul. Dacă ambele condiții sunt false, atunci iese 0.

Exemplul de mai sus poate fi scris într-o formă mai simplă folosind un alt construct de instrucțiune MatLab if:

dacă<выражение1>
<операторы1>% executat dacă expresia1 este adevărată
elseif<выражение2>
<операторы2>% executat dacă expresia2 este adevărată
...
elseif<выражениеN>
<операторыN>% executat dacă expresiaN este adevărată
Sfârșit

si se scrie dupa cum urmeaza:

x=5;
dacă x > 0
disp(1); % este executat dacă x > 0
elseif x< 0
disp(-1); % este executat dacă x< 0
altfel
disp(0); % este executat dacă x = 0
Sfârșit

Cu instrucțiunea if, puteți testa condiții mai complexe (compuse). De exemplu, trebuie să determinați: variabila x se încadrează în intervalul de valori de la 0 la 2? Acest lucru se poate face prin verificarea simultană a două condiții simultan: x >= 0 și x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.

Pentru a implementa condiții compuse în MatLab, se folosesc operatori logici:

& - ȘI logic
| - SAU logic
~ - NU logic

Să ne uităm la un exemplu de utilizare a condițiilor compuse. Să fie necesar să se verifice dacă variabila x este în intervalul de la 0 la 2. Programul va fi scris după cum urmează:

x = 1;
dacă x >= 0 & x<= 2
altfel
Sfârșit

În al doilea exemplu, vom verifica dacă variabila x nu aparține intervalului de la 0 la 2. Acest lucru se realizează prin declanșarea uneia dintre cele două condiții: x< 0 или x > 2:

x = 1;
dacă x< 0 | x > 2
disp("x nu este în intervalul 0 la 2");
altfel
disp("x este în intervalul 0 la 2");
Sfârșit

Folosind operatorii logici AND, OR, NOT, puteți crea o varietate de condiții compuse. De exemplu, puteți verifica dacă variabila x este în intervalul de la -5 la 5, dar nu în intervalul de la 0 la 1. Evident, acest lucru poate fi implementat după cum urmează:

x = 1;
dacă (x >= -5 și x<= 5) & (x < 0 | x > 1)
disp("x aparține lui [-5, 5] dar nu este în ");
altfel
disp("x nu este în [-5, 5] sau în ");
Sfârșit

Rețineți că parantezele au fost folosite în condiția complexă compusă. Faptul este că prioritatea operației AND este mai mare decât prioritatea operației SAU, iar dacă nu ar exista paranteze, atunci condiția ar arăta astfel: (x >= -5 și x<= 5 и x < 0) или x >1. Evident, o astfel de verificare ar da un rezultat diferit de cel așteptat.

Parantezele în programare sunt folosite pentru a schimba prioritatea de execuție a instrucțiunilor. La fel ca operatorii aritmetici, operatorii logici pot fi modificați și la voința programatorului. Datorită utilizării parantezelor, verificarea se efectuează mai întâi în interiorul lor, iar apoi în afara lor. De aceea, în exemplul de mai sus, acestea sunt necesare pentru a obține rezultatul dorit.

Prioritatea operațiilor logice este următoarea:

NOT (~) - cea mai mare prioritate;
Și (&) - prioritate medie;
SAU (|) este cea mai mică prioritate.

instrucțiunea în buclă while

Limbajul de programare MatLab are două instrucțiuni bucle: while și for. Cu ajutorul lor, de exemplu, se realizează programarea algoritmilor recurenți, calcularea sumei unei serii, enumerarea elementelor matricei și multe altele.

În cel mai simplu caz, bucla din program este organizată folosind instrucțiunea while, care are următoarea sintaxă:

in timp ce<условие>
<операторы>
Sfârșit

Aici<условие>înseamnă o expresie condiționată ca cea utilizată într-o instrucțiune if, iar bucla while rulează atâta timp cât condiția este adevărată.

Rețineți că dacă condiția este falsă înainte de a începe bucla, atunci instrucțiunile din buclă nu vor fi niciodată executate.

Iată un exemplu de buclă while pentru calcularea sumei unei serii:


i=1; % total contor
in timp ce eu<= 20 % цикл (работает пока i <= 20)

sfârşitul % sfârşitul buclei
disp(S); % afișare suma 210 pe ecran

Acum vom complica sarcina și vom calcula suma seriei , în timp ce . Aici se obțin două condiții în instrucțiunea buclă: fie contorul pentru i ajunge la 20, fie valoarea sumei S depășește 20. Această logică poate fi implementată folosind o expresie condiționată compusă în instrucțiunea while loop:

S = 0; % valoarea inițială a sumei
i=1; % total contor
in timp ce eu<= 20 & S <= 20 % цикл (работает пока i<=10 и S<=20
S=S+i; % suma numărată
i=i+1; Numărul de creștere procentual cu 1
sfârşitul % sfârşitul buclei

Exemplul de mai sus arată posibilitatea de a utiliza condiții compuse într-o buclă while. În general, ca expresie condiționată, puteți scrie aceleași condiții ca și în instrucțiunea condițională if.

Lucrarea oricărui operator de buclă, inclusiv while, poate fi oprită forțat folosind instrucțiunea break. De exemplu, programul anterior ar putea fi rescris după cum urmează folosind instrucțiunea break:

S = 0; % valoarea inițială a sumei
i=1; % total contor
in timp ce eu<= 20 % цикл (работает пока i<=10
S=S+i; % suma numărată
i=i+1; Numărul de creștere procentual cu 1
dacă S > 20% dacă S > 20,
pauză; % atunci bucla se termină
Sfârșit
sfârşitul % sfârşitul buclei
disp(S); % afișează suma de 21 pe ecran

În acest exemplu, a doua condiție pentru terminarea buclei, când S este mai mare de 20, este scrisă în bucla însăși, iar folosind instrucțiunea break, bucla este ieșită la funcția disp() imediat după bucla while.

Al doilea operator de control al execuției buclei, continuare, vă permite să săriți peste execuția fragmentului de program după acesta. De exemplu, doriți să calculați suma elementelor unui tablou

a = ;

excluzând elementul de la indicele 5. Un astfel de program poate fi scris astfel:

S = 0; % valoarea inițială a sumei
a = ; matrice %
i=0; % număr de index de matrice
in timp ce eu< length(a) % цикл (работает пока i меньше
% lungime matrice a)
i=i+1; % crește contorul indexului cu 1
dacă i == 5% dacă indicele este 5
continua; % atunci nu o calculăm
Sfârșit
S=S+a(i); % suma articolelor numărate
sfârşitul % sfârşitul buclei
disp(S); % afișare suma 40 pe ecran

Trebuie remarcat faptul că în acest program indexul matricei i este incrementat înainte ca condiția să fie verificată. Acest lucru se face astfel încât valoarea indicelui să crească cu 1 la fiecare iterație a buclei. Dacă incrementul contorului i este scris ca în exemplele anterioare, i.e. după ce suma a fost calculată, instrucțiunea continue va face ca valoarea sa să se oprească la 5 și bucla while va rula „pentru totdeauna”.

instrucțiunea pentru buclă

Adesea, atunci când se organizează o buclă, este necesar să se repete peste valoarea contorului într-un interval dat de valori și cu un anumit pas de modificare. De exemplu, pentru a itera elementele unui vector (matrice), trebuie să organizați un numărător de la 1 la N cu un pas de 1, unde N este numărul de elemente ale vectorului. Pentru a calcula suma seriei, se specifică și un numărător de la a la b cu pasul de schimbare a pasului necesar. etc. Datorită faptului că astfel de sarcini sunt adesea întâlnite în practica de programare, pentru implementarea lor a fost propus un operator separat pentru buclă, ceea ce face mai ușoară și mai vizuală implementarea unei bucle cu un contor.

Sintaxa instrucțiunii for loop este următoarea:

pentru<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
Sfârșit

Să luăm în considerare munca acestui ciclu pe exemplul de implementare a algoritmului pentru găsirea valorii maxime a unui element dintr-un vector:

a = ;
m = a(1); % valoarea maximă curentă
pentru i=1:lungime(a) % buclă de la 1 la sfârșitul vectorului c
% pasul 1 (implicit)
dacă m< a(i) % если a(i) >m,
m = a(i); % atunci m = a(i)
Sfârșit
sfârşitul % sfârşitul buclei for
disp(m);

În acest exemplu, bucla for setează contorul i și își schimbă valoarea de la 1 la 10 în trepte de 1. Rețineți că, dacă incrementul nu este specificat în mod explicit, acesta este implicit 1.

În exemplul următor, luați în considerare implementarea algoritmului de deplasare a elementelor vectoriale la dreapta, i.e. penultimul element se pune în locul ultimului, următorul se pune în locul penultimului și așa mai departe. la primul element:

a = ;
disp(a);
pentru i=lungime(a):-1:2 % buclă de la 10 la 2 cu pasul -1
a(i)=a(i-1); Elemente de deplasare % ale vectorului a
sfârşitul % sfârşitul buclei for
disp(a);

Rezultatul programului

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

Exemplul de mai sus arată că pentru a implementa un ciclu cu un numărător de la o valoare mai mare la una mai mică, trebuie să specificați în mod explicit pasul, în acest caz, -1. Dacă acest lucru nu se face, bucla își va încheia imediat activitatea și programul nu va funcționa corect.

Soluții de ecuație