Replacing Matrix Cells with Date Values

2 visualizaciones (últimos 30 días)
Chameleon17
Chameleon17 el 2 de Jun. de 2015
Comentada: Chameleon17 el 2 de Jun. de 2015
Hi,
I am trying to replace the 1 values in a large matrix of cells with the date value stored in a single row.
Matlab doesn't seem to like dimension mismatch or the form of the date cells, but I need to keep them in date format for future analysis.
Does anyone have any advice? or Help pages they could direct me to?
[1] [0] [0] [0] [0] [0] [0]
[1] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [1] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [1] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [1] [0] [0] [0]
[0] [1] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [1] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [1] [0] [0]
[0] [0] [0] [1] [0] [0] [0]
[0] [0] [0] [1] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [1]
[1] [0] [0] [0] [0] [0] [0]
[0] [0] [1] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[1] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [1]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [1] [0] [0] [0] [0]
[0] [0] [1] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [1] [0]
[0] [0] [0] [0] [1] [0] [0]
Columns 1 through 5
'01/04/2004' '02/04/2004' '03/04/2004' '04/04/2004' '05/04/2004'
Columns 6 through 7
'06/04/2004' '07/04/2004'
I have an equal number of columns in each set, I would just like every one in the matrix to represent the date for corresponding column number.
Thank you for any help/advice/direction!

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 2 de Jun. de 2015
d={'01/04/2004' '02/04/2004' '03/04/2004' '04/04/2004' '05/04/2004' '06/04/2004' '07/04/2004'}
v=num2cell(randi([0 1],4,7))
idx=cell2mat(v)==1
for k=1:7
v(idx(:,k),k)=d(k)
end

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 2 de Jun. de 2015
d = {'01/04/2004' '02/04/2004' '03/04/2004'...
'04/04/2004' '05/04/2004' '06/04/2004' '07/04/2004'};
out = { [1] [0] [0] [0] [0] [0] [0]
[1] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [1] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [1] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [1] [0] [0] [0]
[0] [1] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [1] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [1] [0] [0]
[0] [0] [0] [1] [0] [0] [0]
[0] [0] [0] [1] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [1]
[1] [0] [0] [0] [0] [0] [0]
[0] [0] [1] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[1] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [0] [1]
[0] [0] [0] [0] [0] [0] [0]
[0] [0] [1] [0] [0] [0] [0]
[0] [0] [1] [0] [0] [0] [0]
[0] [0] [0] [0] [0] [1] [0]
[0] [0] [0] [0] [1] [0] [0]};
a2 = cell2mat(out);
[~,jj] = find(a2);
out(a2>0) = d(jj);
  1 comentario
Chameleon17
Chameleon17 el 2 de Jun. de 2015
Hi,
This works too. Is it just preference between using a for loop or not then? If I'll be applying it to much larger data sets in the end will this become more of a factor then?
Thanks!

Iniciar sesión para comentar.

Categorías

Más información sobre Time Series Objects 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