Borrar filtros
Borrar filtros

difference between a= and a(:)=

13 visualizaciones (últimos 30 días)
Ernst Reißner
Ernst Reißner el 7 de Jun. de 2021
Comentada: Ernst Reißner el 7 de Jun. de 2021
I find matlab code with assignments
a(:)=... and a(1:N)=...
where in the latter case the right hand side has length N also.
Why they dont write just a=...
Is there a difference?
Also I found the code snipped
if isvector(V)
V = V(:);
what is the sense of this??

Respuesta aceptada

Chunru
Chunru el 7 de Jun. de 2021
a(:) = 1 will not change the size of a, but assigne 1 to every element of a (assume a has been declared before, such as a = zeros(20,1));
On the other hand, a = 1 (for example) will redefine a (both in size, type and value) so that a becomes 1. Even if a is defined earlier as a = zeros(20, 1), a will be redefined with new rhs.

Más respuestas (2)

KSSV
KSSV el 7 de Jun. de 2021
Editada: KSSV el 7 de Jun. de 2021
a(1:N) will be either row or column vector depedning on a is row or column vector respectively.
a(:) always gives you a column vector.
a = rand(1,10) ;
a(1:10)
ans = 1×10
0.6861 0.9950 0.8572 0.1173 0.9764 0.1016 0.8943 0.4731 0.8291 0.0097
a(:)
ans = 10×1
0.6861 0.9950 0.8572 0.1173 0.9764 0.1016 0.8943 0.4731 0.8291 0.0097
If A is a matrix, A(:) will give a column vector will all columns appended one after another.
You can try yourself instead asking such simple questions.

Walter Roberson
Walter Roberson el 7 de Jun. de 2021
Assigning to a(:) or a(1:N) keeps the same "shape" and datatype.
Example:
A1 = zeros(5,1,'uint8');
A2 = zeros(5,1,'uint8');
A1(:) = 1:5;
A2 = 1:5;
After, A1 stays a uint8 column vector, but A2 becomes a double precision row vector.

Categorías

Más información sobre Mathematics en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by