Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
alina_bebe din Bucuresti
Femeie
19 ani
Bucuresti
cauta Barbat
30 - 48 ani
Mihai Sprinceana / Matlab / Operatii uzuale cu vectori in consola Moderat de andreeamp, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
mihaispr
Administrator

Inregistrat: acum 17 ani
Postari: 2142
In continuare veti invata cum sa operati cu vectori(definirea lor) si comenzi de baza in consola:

1) Pentru a introduce un vector si a-l stoca intr-o variabila a scrieti in consola:

>> a = [ 1 2 3 4 8 ] %elementele vectorului sunt cuprinse intre paranteze patrate

Se va afisa: a= 1 2 3 4 8

Acelasi efect daca scriem elementele vectorului separate prin ,:

>> a= [1,2,3,4,8]

2) Daca vreti sa vedeti vectorul cu elemente tastati >>a(se va afisa: 1 2 3 4 8 doar elementele insiruite)

3) Scrierea unui vector sub forma de vector coloana este realizata astfel:

Metoda1:

>> a = [ 1 2 3 4 8]'

Se va afisa: a=
                       1
                       2
                       3
                       4
                       8

Metoda2:

>> a= [1;2;3;4;8] %elemente separate prin ;

4) Scrierea unui vector avand primele 8 elemente este realizata astfel:

>> a =  [1:8]

Se va afisa: a= 1 2 3 4 5 6 7 8

5) Scrierea unui vector folosind un anumit pas:

Forma generala: val.initiala:pas utilizat:valoare finala

Exemplu: >>a=[1:.25:4] %am definit un vector care incepe cu 1, are pasul 0.25 si se termina cu 4
Se va afisa:

a =

  Columns 1 through 7

    1.0000    1.2500    1.5000    1.7500    2.0000    2.2500    2.5000

  Columns 8 through 13

    2.7500    3.0000    3.2500    3.5000    3.7500    4.0000

Obs1: Pt.lucrul cu vectori mai mari avem:

>>0:3:12

Se va afisa: ans= 0 3 6 9 12

>>ans' % va transforma vectorul intr-un vector coloana

0
3
6
9
12

Obs2: Daca vreau sa vad doar primele 3 elemente din vectorul de mai sus avem:

>>a(1:3) % imi va afisa primele 3 elemente adica 0,3 si 6

Obs3: De aici puteti extinde si alte operatii:

Sa zicem ca avem vectorul: >>a= (1:1:8)

Adica:

a =1     2     3     4     5     6     7     8

>>a(1:3)+a(2:4)

Se va afisa: ans = 3     5     7

>>a(1:3)-a(2:4)

Se va afisa: ans = -1    -1    -1

6)Referirea la un element al unui vector se face astfel:

>>b=a(5) % se face referire la al cincilea element din vector

Se va afisa: b=8

Un exemplu de referire a unui element din vector:

>>a=[-1.3  sqrt(3) 24/5] % astfel el va afisa -1.3 valoarea lui radical din 3 si
rezultatul impartirii lui 24 la 5

Se va afisa: -1.3000    1.7321    4.8000

>>b=a(2) % face referire la al doilea element al vectorului si se va afisa 1.7321

>>abs(a(1)) % calculeaza modulul lui -1.3

Se va afisa: ans=1.3

>> a(5)=abs(a(1)) %inlocuieste cu valoarea absoluta a primului element, elementul specificat in cazul nostru al cincilea element, iar al patrulea element va avea 0

Are ca efect afisarea urmatorului rezultat
a =-1.3000    1.7321    4.8000         0    1.3000

Daca in schimb aveam a(4)=abs(a(1))

S-ar fi afisat:

a =-1.3000    1.7321    4.8000         1.3000    1.3000

a=1:7 defineste un vector: a=1 2 3 4 5 6 7

a=1:2:9 defineste un vector cuprins intre 1 si 9 cu pasul 2 adica: 1 3 5 7 9


7) Calculul lungimii unui vector(numarul de elemente ale unui vector)

>>a=[1 2 3 4 8] %definirea vectorului cu elementele dorite de voi
>>b=length(a) %afisarea numarului de elemente ale vectorului

8) Produsul scalar a 2 vectori

Fie 2 vectori definiti in consola:

>>a=[1;0;2]
>>b=[-1;1;2]

Metoda 1:
>>a'*b %afiseaza produsul scalar al celor 2 vectori

Metoda 2:
>>c=sum(a.*b) %produsul scalar a vectorilor a si b folosind semnul .*

Produsul scalar este: a1*b1+a2*b2+a3*b3=1*-1+0*1+2*2=3

Deci produsul scalar este=3

9) Produsul vectorial a 2 vectori

>>a=[1;0;2]
>>b=[-1;1;2]
>>x*y' %afiseaza produsul vectorial al celor 2 vectori

Vom inmulti a1 cu toate comp lui b si ne da prima linie,apoi a2 cu toate comp lui b si avem a doua linie s.a.m.d

Se va afisa deci:
-1 1 2
0 0 0
-2 2 4
   


Se va afisa:
ans=5

10) Functia isnan- returneaza un vector care contine 1 daca avem NaN(Not a Number) si 0 daca sunt numere

Exemplu: >>isnan([pi NaN Inf -Inf])

Se va afisa un vector: [0 1 0 0]

11) Functia isinf- returneaza un vector care contine 1 daca avem +/-infinit si 0 in cazul unor numere finite sau NaN(Not a Number)

Exemplu: >>isinf([pi NaN Inf -Inf])

Se va afisa un vector: [0 0 1 1]

12) Functia finite- returneaza un vector care contine 1 daca avem numar finit si 0 daca avem +/- infinit sau NaN(Not a Number)

Exemplu: >>finite([pi NaN Inf -Inf])

Se va afisa un vector: [1 0 0 0]

13) Functia size- afiseaza prima si ultima valoare a vectorului

>>a= (1:5) sau >>a=[1 2 3 4 5]
>>size(a) % se vor afisa prima si ultima valoare din vector adica 1 respectiv 5

14) Functia ones- inlocuieste fiecare element al vectorului cu 1

>>a= (1:5)
>>ones(1,5)

Se va afisa: ans= 1 1 1 1 1

Daca in schimb avem >>ones(1,4) se va afisa: ans= 1 1 1 1

15) Functia zeros- inlocuieste fiecare element al vectorului cu 0

>>a= (1:5)
>>zeros(1,5)

Se va afisa: ans= 0 0 0 0 0

Daca in schimb avem >>zeros(1,4) se va afisa: ans= 0 0 0 0

16) Operatii aritmetice cu vectori

a) Adunarea a 2 vectori(practic scad element cu element)

Fie 2 vectori dati:

>>a=[1 2 3 4]
>>b=[-2 3 4 1]
>>c=a+b

Efect: se va afisa c = -1     5     7     5

b) Scaderea a 2 vectori

>>a=[1 2 3 4]
>>b=[-2 3 4 1]
>>c=a-b

Efect: se va afisa c = 3    -1    -1     3

c) Ridicarea la putere(aceasta operatie se realizeaza cu ajutorul simbolurilor .^)

>>a=[1 2 3 4]
>>b=[1 4 4 3]
>>c=a.^b %practic ridicam primul el al vec a la puterea primului el al vec B samd

Efect: se va afisa c = 1    16    81    64

17) Generarea elementelor unui vector folosind distributii

a) >>rand(1,2,3) %genereaza aceste numere folosind distributia uniforma

b) >>randn(1,2,3) %genereaza aceaste numere folosind distributia normala

18) Cautarea unui element dintr-un vector

Fie vectorul dat a=1 2 3 4

>>a= (1:4) sau a=[1 2 3 4]
>>a(find(x==2)) % cauta elementul 2 in vector daca il gaseste il afiseaza daca nu afiseaza simbolul vid adica []

19) Concatenarea a 2 vectori

>> a=1:3 %vectorul a

a =

     1     2     3

>> b=4:6 %vectorul b

b =

     4     5     6

>>c=[1:3,4:6] %c reprezinta vectorul concatenat din a si b

c =

     1     2     3     4     5     6


20) Definire vector si stocare in variabila intreaga doar a anumitor valori din vector:


>> a=[1 2 3 4]

a =

     1     2     3     4


b=a(a>=4 & a<=9)

b =

     4


21) Definirea a doi vectori si trunchierea vectorului mai mare(trunchiere =mai putine valori)


>>v1 = 1:10; %definirea primului vector in variabila v1 => valoare initiala =1 ; valoare finala=10
v2 = 2:3:50; %definirea celui de-al doilea vector in variabila v2

veclim = @(v1,v2) deal(v1(1:min(length(v1),length(v2))), ...
   v2(1:min(length(v1),length(v2))));

[u1,u2] = veclim(v1,v2) %folosirea functiei veclim pt.trunchierea vectorului cu mai multe elemente


u1 =
     1 2 3 4 5 6 7 8 9 10
u2 =
     2 5 8 11 14 17 20 23 26 29

22) Definire vector,generarea a doi vectori a si b din primul vector definit x precum si calcul medie aritmetica  a el.vec x si verificarea daca exista numere prime in vectorul x (intoarce 1 dk existe elemente prime si 0  in caz contrar):

>> x=[4 5 1 3 2 6 8]





x =

     4     5     1     3     2     6     8

>> [a,b]=sort(x)

a =

     1     2     3     4     5     6     8


b =

     3     5     4     1     2     6     7

>> mean(x)

ans =

    4.1429

>> isprime(x)

ans =

     0     1     0     1     1     0     0

23) Copierea dintr-un vector mare a doar a anumitor elemente intr-un alt vector b

>>a=1:4000 %primul vector contine elemente de la 1 la 4000
>>b = x(1:1000) %copiem in al doilea vector b elemente doar de la 1 la 1000

24) Modificarea unui anumit element dintr-un vector cu un alt element precizat folosind comanda simset

Sa luam urmatorul exemplu:

>>a=[1 2 3]



Sa spunem ca vrem sa modificam valoarea 2 din vector(al doilea element al vectorului) cu valoarea 5.

Pentru aceasta vom folosi comanda simset care este utilizata impreuna cu comanda sim.



>>[t,x,y]=sim('modelName',[0 2],simset('InitialState', a));

sau

>>[t,x,y]=sim('modelName',[0 2],simset('InitialState', [1 2 5]));

Sunt comenzi ce simuleaza modelul cu numele 'modelName' cu valori  de pas intre 0 si 2 cu vectorul initial a , sau concret [1 2 5] in al doilea exemplu.

,commands which simulates model 'modelName' between stepTime 0 and stepTime 2, with the initial state vector 'a' or '[1 2 5]'.


Pentru a modifica al doilea element al vectorului la valoarea 5 in loc de 2 vom scrie:

>>a(2)=5;

25) Obtinerea valorilor prin impartire la 2 intre fiecare element al unui vector definit in consola

Exemplu:

Fie definit vectorul a in consola:

>>a=[-6 -3 0 3 6]

>> (a(1:end-1) + a(2:end))/2 %varianta 1

>> diff(a)/2 + a(1:end-1) %varianta 2

26) Calculul normei unui vector

>> a=[1 2 3 0]

a =

     1     2     3     0

>> norm(a)

ans =

    3.7417

>>

27) Functia unique

Exemplu:

>> a=[1 1 2 3 1 2 1]

a =

     1     1     2     3     1     2     1

>> b=unique(a)

b =

     1     2     3

>> mat=[1 2 3 4 5; 1 5 3 2 1; 2 2 2 1 1; 2 2 1 2 0; 2 1 0 8 9]

mat =

     1     2     3     4     5
     1     5     3     2     1
     2     2     2     1     1
     2     2     1     2     0
     2     1     0     8     9

>> b=unique(mat,'rows')

b =

     1     2     3     4     5
     1     5     3     2     1
     2     1     0     8     9
     2     2     1     2     0
     2     2     2     1     1

>>

28) Toate permutarile si combinarile posibile intre elementele a 3 vectori definiti in consola:

>>A=[1 2 3]
>>B=[1 1 2]
>>C=[2 1 3]
>>[AA BB CC]=ndgrid(A,B,C)
COMB= [AA(: ) BB(: ) CC(: )]

29) Calculul a unghiului dintre 2 vectori

>> v1=[3 5]

v1 =

     3     5

>> v2=[5 6]

v2 =

     5     6

>> unghi=acos(dot(v1,v2)/(norm(v1)*norm(v2)))

unghi =

    0.1543

Unde dot(v1,v2) reprezinta produsul scalar dintre 2 vectori v1 si v2 , iar norm(v1) si
norm(v2) reprezinta norma celor 2 vectori v1 si v2


30) Produsul scalar a 2 vectori cu functia dot

>> v1=[3 5]

v1 =

     3     5

>> v2=[5 6]

v2 =

     5     6

>>dot(v1,v2)

31) Unghiul dintre 2 vectori folosind functia angle

>> angle(complex(5,6)-complex(3,5))

ans =

    0.4636

32) Compararea a 2 vectori


Exemplul 1:

a=[1 1 1 1 1 2 2 3 4 5 6 7]
b = [1 1 1 2 2 3 5 7]'

Si vrem sa obtinem c=[ 1 1 4 6 ]

>>[uab] = union(a,b)
n = histc(a,uab) - histc(b,uab)
uab = uab(n>0)
n = n(n>0)

Exemplul2:

Avem 2 vectori:

a=[1,10,7,3,4];
     b=[10,7];

Si vrem sa obtinem

r =

     1     3     4

>> a=[1,10,7,3,4];
     b=[10,7];
     r=a(~ismember(a,b))

r =

     1     3     4

Exemplul3: Folosind functia setdiff de comparare si afisare a elementelor care nu sunt comune intre cei 2 vectori

Fie vectorii:

a=[1 4 7 10]

b=[7 10]

Si vrem sa obtinem vectorul c=[1 4]

>> c=setdiff(a,b)

c =

     1     4

33) Functia nnz- numara cate elemente diferite de 0 sunt in vector

>> a=[1 0 0 -1 2 3 4] %definirea vectorului cu 7elemente in consola matlab

a =

     1     0     0    -1     2     3     4

>> b=nnz(a) %aplicarea functiei nnz pentru numararea elementelor diferite de 0 din vector

b =

     5

O alta metoda ar fi sa folosim functia size pt.vectorul nostru:

>> a=[1 0 0 -1 2 3 4]

a =

     1     0     0    -1     2     3     4

>> size(find(a~=0),2)

ans =

     5

>>

34) Functia numel -numara cate elemente sunt in vector

>> a=[1 0 0 -1 2 3 4] %definirea vectorului cu 7elemente in consola matlab

a =

     1     0     0    -1     2     3     4

>> n=numel(a) %aplicarea functiei numel pentru numararea elementelor din vector

n =

     7

35) Atribuire vector A intr-un alt vector B care are elementele inversate

Aici un exemplu:

>>A = [ -2, 1, 0, 76, -30, 10]
Si vrem sa obtinem :

B = [10, -30, 76, 0, 1, -2];

Solutie:

B=A(end:-1:1)


pus acum 17 ani
   
mihaispr
Administrator

Inregistrat: acum 17 ani
Postari: 2142
Pentru afisarea tuturor operatiilor care pot fi efectuate cu vectori scrieti in command window:


>>docsearch vector


pus acum 15 ani
   
duccu_s
Membru nou

Inregistrat: acum 15 ani
Postari: 1
m-ar interesa cum se face compararea a doi vectori

pus acum 15 ani
   
mihaispr
Administrator

Inregistrat: acum 17 ani
Postari: 2142

duccu_s a scris:

m-ar interesa cum se face compararea a doi vectori


>>docsearch vector %si cauti exact ce vrei

Nu mai posta decat daca ai gasit o solutie la ceva practic.

Forumul asta e facut sa facem schimb de informatii si de cunostinte strict pentru acest lucru. Citeste regulament postare forum inainte de a posta te rog.

Ti-am adaugat si compararea a 2 vectori in matlab in command window.


pus acum 15 ani
   
mihaispr
Administrator

Inregistrat: acum 17 ani
Postari: 2142
36) Cum schimbam pozitiile unor elemente intr-un vector:

In command window tastam suita de comenzi:

>>v1=[5 2 1 3 4] %definire vector
v2=sort(v1) %sortare crescatoare vector
v3=[v2(1:3) 5 4] %schimbarea elementelor de pe ultimele 2 pozitii din vector

37) Folosirea NaN (Not a Number)

>>X1=[45 78 58]
X2=[45]
X3=[78 89 45 45 45]

Si vrem sa obtinem vectorii:

X1=[45 78 58 NaN NaN]
X2=[45 NaN NaN NaN NaN NaN]
X3=[78 89 45 45 45]


Pentru aceasta scriem comenzile:

>>X1(numel(X1)+1:5) = nan;
>>X1
>>X2(numel(X2)+1:5) = nan;
>>X2
>>X3(numel(X3)+1:5) = nan;
>>X3

38) Complementarea valorilor a 2 vectori folosind functia setxor

>>help setxor

Exemplu:

>> v1=[1 2 3 4 5]

v1 =

     1     2     3     4     5

>> v2=[2 4]

v2 =

     2     4

>> setxor(v1,v2)

ans =

     1     3     5

>>

39) Eliminarea unor valori precizate dintr-un vector

Sa presupunem ca avem vectorul:

X=[1 3 2 5 9 0 3];

Si dorim sa eliminam valorile 5 si 7 pt. a obtine vectorul:

X =[1 3 2  5 0]


Pentru aceasta tastati suita de comenzi in consola matlab (command window):

>> X=[1 3 2 5 9 0 3];
>> X([5,7])=[]

X =

     1     3     2     5     0

>>


40) Stergerea randurilor unei matrici bazate pe valorile dintr-un vector separat. Valorile din vector corespund cu nr. randurilor care dorim sa le stergem


>> A=reshape(1:20,10,2);
>> A

A =

     1    11
     2    12
     3    13
     4    14
     5    15
     6    16
     7    17
     8    18
     9    19
    10    20

>> b=1:2:10;
>> b

b =

     1     3     5     7     9

>> A(b,: ) = []

A =

     2    12
     4    14
     6    16
     8    18
    10    20

>> A

A =

     2    12
     4    14
     6    16
     8    18
    10    20

>>

41) Transformare vector in matrice si completare cu 0

Avem vectorul:

V=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]

Dorim sa afisam 6 elemente pe rand.

Dar 20/6=3,3 si vrem ca celelalte sa fie =0. Deci dorim sa completam cu 0 astfel incat sa obtinem matricea:

V=[1 2 3 4 5 6
     7 8 9 10 11 12
    13 14 15 16 17 18
    19 20 0 0 0 0]

% vectorul de intrare
  V=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20] ;
  Ncols = 6 ;

% vectorul de intrare il vom transforma intr-o matrice
  nV = numel(V) ;
  M = zeros(1,Ncols*ceil(nV/Ncols))
  M(1:nV) = V
  M = reshape(M,Ncols,[])

42) Cum egalam cu 0 anumite elemente dintr-un array

Input: A=[1:10]

adica A= [ 1 2 3 4 5 6 7 8 9 10]

Ca output dorim sa obtinem:


0 0 0 4 5 0 0 0 9 10

Pt.aceasta:

>>A=1:10;
idx=[1:3 6:8]; % indecsi pt. a face 0
A(idx)=0;

43) Selectia unor elemente din vector

>> vec = [1 4 2 8 6 4 0 8] % definirea vectorului in variabila vec

vec =

     1     4     2     8     6     4     0     8

>>sel = [2 6 3]; % aleg elementele al doilea , al saselea si al treilea din vector

>>vec(sel)

Efect:

ans =

     4     4     2

In schimb daca dorim sa alegem ceilalti indice ce contin celelate 5 elemente pe langa elementele 2 , 6 si 3 procedam astfel:

vec = [1 4 2 8 6 4 0 8];
sel = [2 6 3];
r=ones(size(vec));
r(sel)=0;
selInv=find(r==1)

selInv =

     1     4     5     7     8

44) Lipirea elementele citite ale unui vector

Exemplu:

Input: vec = [14 52 86];

Output: vec = [145286];

Cod de executat in command window:

vec = num2str(a);
vec(isspace(vec)) = [];
vec= str2num(vec);

Pentru detalii suplimentare in command window tastati:

>> help isspace
>> help str2num


pus acum 15 ani
   
Pagini: 1  

Mergi la