Creating a vector from recursive elements of another vector

1 visualización (últimos 30 días)
Say I create a matrix A (1, 100) and want to create a matrix B whose entries are b_i = a_i * a_(i+1), meaning it would be (1,99)
How would I go about this? Im new to MATLAB and this is puzzling me.
Thanks.

Respuesta aceptada

Peter O
Peter O el 6 de Oct. de 2020
Welcome to MATLAB!
Matlab will allocate the memory for you on the fly, so this is a one line operation, no need for a loop :)
Use the colon to mark a continuous range of indices. For your question:
B = A(1,1:99).*A(1,2:100)
Note that the .* operator is used to mark element-wise multiplication, otherwise, you're trying to multiply [1x99] x [1x99], which isn't compatible and you'll receive an error. There are similar element-wise operations for exponentiation (.^) and division (./)
You can also go backwards, skip indices, and access a subset by using two colons for the range:
B = A(1, 1:99) .* A(1,100:-1:2) % Backwards
B = A(1, 1:3:99) .* A(1,2:3:100) % Every 3rd
B = A(1, [3,4,5]) .* A(1,[51,61,71]) % A subset of values having equal array dimensions
B = A(1, 1:end-1) .* A(1, 2:end); % Use the "end" keyword with add/subtraction to have flexible code without needing to query the matrix length

Más respuestas (0)

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by