Borrar filtros
Borrar filtros

Adding data to two matrices for indexing

3 visualizaciones (últimos 30 días)
Joseph Lee
Joseph Lee el 8 de Nov. de 2017
Respondida: Stephen23 el 8 de Nov. de 2017
I have 2 matrices Z and Y, both are a 10x1300 matrix and consists of random numbers, how do i add data to the left and right of each element and then use indexing to find Y for a certain value of Z
For example,
Z [10 1300]
Y [10 1300]
One element in Z:
Z(1,1)=10
z=Z(1,1)
Add data to left and right side,
z-3,z-2,z-1,z,z+1,z+2,z+3
Final result: 7,8,9,10,11,12,13
Similar for Y but with different data additions
One element in Y:
Y(1,1)=20
y=Y(1,1)
Add data to left and right side,
y+3,y+2,y+1,y,y+1,y+2,y+3
Final result: 23,22,21,20,21,22,23
Use indexing to find Z=7 then find the respective element from Y would give Y= 23,
Y(find(Z==7))=23
Z=8,Y=22
Z=9,Y=21
Z=10,Y=20
Z=11,Y=21
Z=12,Y=22
Z=13,Z=23
  2 comentarios
Guillaume
Guillaume el 8 de Nov. de 2017
Editada: Guillaume el 8 de Nov. de 2017
I have no idea what it is you're asking. Your explanation is really unclear. Let's start with some smaller Y and Z, e.g. given:
Z = [10 7 9
15 1 23];
and
Y = [20 1 13
5 7 9];
what exact result do you want (and how do you get at it)?
result = [? ? ?
? ? ?];
Is it even a matrix the same size as Y and Z that you want as a result?
Joseph Lee
Joseph Lee el 8 de Nov. de 2017
Editada: Joseph Lee el 8 de Nov. de 2017
final Z
[7 8 9 10 11 12 13 ¦ 4 5 6 7 8 9 10 ¦ 6 7 8 9 10 11 12
12 13 14 15 16 17 ¦-2 1 0 1 2 3 4 ¦ 20 21 22 23 24 25 26]
Final Y= [23 22 21 20 21 22 23¦ 4 3 2 1 2 3 4 ¦ 16 15 14 13 14 15 16
8 7 6 5 6 7 8¦ 10 9 8 7 8 9 10 ¦ 12 11 10 9 10 11 12]
both are same sized, i need a way to add additional 6 elements into each and every element in the matrix
you can remove the ¦

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 8 de Nov. de 2017
>> Z = [1,9;6,1];
>> cell2mat(arrayfun(@(m)m-3:+1:m+3,Z,'uni',0))
ans =
-2 -1 0 1 2 3 4 6 7 8 9 10 11 12
3 4 5 6 7 8 9 -2 -1 0 1 2 3 4
>> Y = [9,1;4,9];
>> cell2mat(arrayfun(@(m)[m+3:-1:m,m+1:m+3],Y,'uni',0))
ans =
12 11 10 9 10 11 12 4 3 2 1 2 3 4
7 6 5 4 5 6 7 12 11 10 9 10 11 12
>>

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing 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