Replacing Matrix Cells with Date Values

2 vues (au cours des 30 derniers jours)
Chameleon17
Chameleon17 le 2 Juin 2015
Commenté : Chameleon17 le 2 Juin 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!

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 2 Juin 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
  1 commentaire
Chameleon17
Chameleon17 le 2 Juin 2015
Oh that's amazing! :) Thank you so much!

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 2 Juin 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 commentaire
Chameleon17
Chameleon17 le 2 Juin 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!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Time Series Objects dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by