MATLAB: ¿Cómo convertir un vector de 2928x1 en un vector de 8784x1 con intervalos específicos de elementos? -- matlab campo con loops campo con for-loop campo con vector camp Relacionados El problema

Matlab: How to turn a vector of 2928x1 into a vector of 8784x1 with specific intervals of elements?


0
vote

problema

Español

Estoy tratando de convertir un vector con 2928 valores en un vector con 8784 valores. El primer vector es un vector con información con un intervalo de 3 horas, y me gustaría tener un vector por hora con esos valores agregados cada 3 horas y los restantes deben llenarse con NAN. Mi primer enfoque fue crear un vector NAN con 8784 valores, pero luego no he podido crear un 'Loop' que trabajó con esto.

Para simplificarlo, intentaré explicar con un ejemplo (N es el número de valores del vector más pequeño):

  S_3h = ones(n,1); % this acts as the small vector that has only information each 3hours B_h = nan(3*n,1); %this is the created hourly vector that I want to fulfill   

El resultado quería es:

  B_h = [1 nan nan 1 nan nan 1 nan nan 1 nan nan ...]   

¿Puedes ayudarme por favor? Muchas gracias de antemano!

Original en ingles

I am trying to convert a vector with 2928 values into a vector with 8784 values. The first vector is a vector with info with an interval of 3hours, and I would like to have an hourly vector with those values added every 3 hours and the remaining should be filled with NaN. My first approach was to create a NaN vector with 8784 values but then I have not been able to create a 'for loop' that worked with this.

To make it simple, I'll try to explain with an example (n is the number of values of the smallest vector):

S_3h = ones(n,1); % this acts as the small vector that has only information each 3hours B_h = nan(3*n,1); %this is the created hourly vector that I want to fulfill 

The result wanted is:

B_h = [1 nan nan 1 nan nan 1 nan nan 1 nan nan ...] 

Can you help me please? Thank you very much in advance!

           

Lista de respuestas

5
 
vote
vote
La mejor respuesta
 

Simplemente índice con paso diferente a 1. En este caso, el paso es 3.

  B_h(1:3:end) = S_3h   
 

Simply index with step different to 1. In this case, step is 3.

B_h(1:3:end) = S_3h 
 
 
1
 
vote

Ya hay dos buenas respuestas, por lo que solo para el deporte (y para el kron ...), aquí hay una solución de revestimiento:

  S_3h = randi(10,1,n); B_h=kron(S_3h,[1 NaN NaN]);   
 

There are already two good answers, so just for the sport (and for the kron...), here is one liner solution:

S_3h = randi(10,1,n); B_h=kron(S_3h,[1 NaN NaN]); 
 
 
1
 
vote

La solución de Zizy Archer es buena (y probablemente lo que debe usar), pero a continuación hay otra opción.

  S_3h = ones(n,1); B_h = nan(3,n); % notice the different indices  B_h(1,:) = S_3h; % the top row contains the non-NaN values. This is common to all methods. B_h = B_h(:); % reshape to a column vector   

hecho un poco diferente:

  B_h = reshape( S_3h.' .* [1; NaN(1,2)],[],1);              % R2016b onward B_h = reshape( bsxfun(@times, S_3h.',[1; NaN(2,1)]),[],1 ); % R2007a onward   

Si tiene la caja de herramientas de procesamiento de imágenes, también puede usar la función S_3h = ones(n,1); B_h = nan(3,n); % notice the different indices B_h(1,:) = S_3h; % the top row contains the non-NaN values. This is common to all methods. B_h = B_h(:); % reshape to a column vector 8 , por lo que:

  B_h = reshape(padarray(S_3h, [0 2], NaN, 'post').', [], 1);   
 

Zizy Archer's solution is good (and probably what you should use), but below is another option.

S_3h = ones(n,1); B_h = nan(3,n); % notice the different indices  B_h(1,:) = S_3h; % the top row contains the non-NaN values. This is common to all methods. B_h = B_h(:); % reshape to a column vector 

Done a bit differently:

B_h = reshape( S_3h.' .* [1; NaN(1,2)],[],1);              % R2016b onward B_h = reshape( bsxfun(@times, S_3h.',[1; NaN(2,1)]),[],1 ); % R2007a onward 

If you have the image processing toolbox, you can also use the padarray function like so:

B_h = reshape(padarray(S_3h, [0 2], NaN, 'post').', [], 1); 
 
 

Relacionados problema

1  C. Vector para manejar diferentes tipos de matriz basada en argumento  ( C vector to handle different array type based in argument ) 
Estoy buscando en vectores en C, es decir, matrices de forma dinámica. He implementado uno que maneja una matriz de caracteres. Pero si quiero la misma func...

2  Cómo pasar un vector de STL a una función que toma un Const [] (C ++)  ( How to pass a stl vector to a function which takes a const c ) 
Tengo un vector 3D STL, vector<vector<vector<double> > > mdata; También tengo una función myfun(const double ya[]); Para ser más precisos, es un...

2  ¿Cómo usar un sindicato C para equiparar múltiples variables nombradas y otra, más grande llamada variable? [duplicar]  ( How to use a c union to equate multiple named variables and another larger name ) 
Esta pregunta ya tiene respuestas aquí : ¿Cómo compilar el código C con estructuras / sindicatos anó...

0  Error de tiempo de ejecución al implementar vector en C ++  ( Runtime error while implementing vector in c ) 
Estoy tratando de implementar mi propia versión de vector en C ++. Hasta ahora lo he hecho .. #include<iostream> #include<string> using namespace std; t...

4  ¿Cómo puedo cambiar de elementos a la izquierda (para implementar el borrado) en el contenedor de C ++?  ( How can i shift elements to left in order to implement erase in c container ) 
De mi pregunta anterior: Cómo implementar Borrar En vector en C ++ , he intentado implementar erase a través de asignar nueva memoria, y copiar todos los e...

26  Pensando en vectores con r  ( Thinking in vectors with r ) 
Sé que se debe evitar R funciona de manera más eficiente con vectores y bucle. Estoy teniendo dificultades para enseñarme a escribir el código de esta manera....

0  MATLAB: evaluar una función simbólica con argumentos vectoriales y matriz  ( Matlab evaluate a symbolic function with vector and matrix arguments ) 
Quiero hacer algo como esto: syms x1 x2 h11 h12 h21 h22 x = [x1 x2] matrix = [h11 h12; h21 h22] y luego cree mi función como: f(x, matrix) = ((2*mat...

4  Rendimiento vectorial de STL  ( Stl vector performance ) 
STL Vector Class almacena una copia del objeto con el constructor de copia cada vez que llamo push_back. ¿No ralentizaría el programa? Puedo tener un tipo de ...

3  Crear e inicializar una matriz de vectores de una sola vez  ( Create and initialise an array of vectors in one go ) 
Para crear una matriz de cadenas, esto funciona: std::string array[] = { "first", "second", : "last" }; Si trato de hacer lo mismo con ...

10  Puntos de colineal  ( Collinear points ) 
Si tengo A, B, C punto con X, y en forma de vectores que, ¿cómo puedo encontrar puntos colineal ... FABS ((b.x_-a.x _) * (c.y_-a.y _) - (c.x_-a.x _) * (b.y_...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos