Vous devez utiliser l'indexation logique pour obtenir les prix dans une fourchette de 30 minutes:
data(0 < data(:,2) & data(:,2) < 31, 3)
Pourquoi trouver ne fait pas ce que vous attendez?
find
travaux sur le résultat de l'expression suivante 0 < data(:,2) & data(:,2) < 31
, à savoir [1 1 1 1].'
Il ne sait rien au sujet de la matrice d'origine data
. Par conséquent, les deuxième et troisième arguments sont inutiles dans ce cas. Ils seraient utiles pour obtenir le nonzero elements in a matrix.
En tant que (moins efficace) alternative à l'indexation logique, vous pouvez obtenir le même résultat comme suit:
data(find(0 < data(:,2) & data(:,2) < 31), 3)
Sélection d'une heure spécifique
À l'heure actuelle, vous sélectionnez les prix des la première moitié de chaque heure. Pour sélectionner par exemple les prix midi 00-00h30, vous pouvez utiliser les éléments suivants:
data(data(:,1) == 0 && 0 < data(:,2) & data(:,2) < 31, 3)
merci pour la réponse rapide mais je ne marche pas car il retourne valeurs à la 2ème heure, 3ème, 4ème heure ... ainsi de suite. Je voudrais ajouter des valeurs entre 00:00 - 00:30, 00: 30-1: 00, 1:00 - 1:30 .... –
Bien sûr, vous devez ajouter une condition supplémentaire sur la première colonne. – m7913d