informasi waktu rata-rata

Saya memiliki dua array sel dengan informasi waktu:

ini contohnya:

'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-11'
'2012-05-11'

'19:28:27.000'
'19:28:38.000'
'21:57:31.000'
'21:57:37.000'
'21:57:40.000'
'21:57:43.000'
'21:57:50.000'

Saya hanya memerlukan informasi dua kali seperti yang saya lakukan unik:

'2012-05-10'    '19:28:27.000'
'2012-05-11'    '21:57:40.000'

Suatu saat saya akan memiliki ini juga:

'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'

'19:26:27.000'
'19:26:38.000'
'21:55:31.000'
'21:57:37.000'
'21:55:40.000'

Bagaimana cara saya melakukan ini.


person nman84    schedule 16.07.2012    source sumber
comment
Apa yang kamu tanyakan di sini? Pertanyaan Anda sedikit tidak jelas   -  person mathematician1975    schedule 16.07.2012
comment
Anda harus memberikan lebih banyak konteks dan penjelasan. Saya berasumsi bahwa entri indeks yang sama di setiap array adalah bagian dari tanggal waktu yang sama. Judul Anda menyatakan bahwa Anda menginginkan rata-rata tetapi Anda mengambil waktu minimum/paling awal pada hari tertentu (dengan asumsi bahwa dalam contoh Anda, Anda salah satu - waktu paling awal pada tanggal 11 akan menjadi entri berikutnya)   -  person Mikeb    schedule 16.07.2012
comment
Menambah komentar sebelumnya, apa hasil yang diharapkan? Tolong berikan contoh singkat masukan dan keluaran yang diharapkan...   -  person Eitan T    schedule 16.07.2012
comment
Pertanyaan Anda SEPENUHNYA tidak jelas. Apa itu masukan? Apa itu keluaran? Apa masalahnya?   -  person mwengler    schedule 16.07.2012
comment
Saya membutuhkan hari dan jam yang unik, menit dan detik tidak menjadi masalah di luar array.   -  person nman84    schedule 16.07.2012


Jawaban (2)


Anda dapat melakukan ini dengan fungsi unique:

>> dates = {'01-Jan-2001'; '01-Jan-2001'; '01-Jan-2001'; '02-Jan-2001'};
>> times = {'15:52';'16:03';'17:05';'04:13'};
>> [d idx] = unique(dates);
>> t = times(idx);
>> [d t]
ans = 
    '01-Jan-2001'    '17:05'
    '02-Jan-2001'    '04:13'

Metode ini mengambil waktu terakhir yang terkait dengan setiap tanggal. Jika Anda ingin mengambil pertama kali maka Anda dapat menggunakan fungsi ini:

function [d t] = uniqueDates(dates,times)
[d idx] = unique(flipud(dates));
reversed_times = flipud(times);
t = reversed_times(idx);
person Chris Taylor    schedule 16.07.2012

Konversikan string menjadi vecotr menggunakan datevec(), lalu hilangkan min dan info detik dan konversikan kembali ke string tunggal menggunakan datestr() lalu gunakan unik()

Ini contohnya tetapi saya belum mengujinya:

dates = ['2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-10'
'2012-05-11'
'2012-05-11']

times = ['19:28:27.000'
'19:28:38.000'
'21:57:31.000'
'21:57:37.000'
'21:57:40.000'
'21:57:43.000'
'21:57:50.000']

%this bit might not work, if not just do it with a for loop. It is constructing a vecotr of spaces.
spaces = zeros(size(times,1), 1);
spaces(:) = " ";

%Concatenate the date and time strings with a space character between them.
DateVectors = datevec([dates, spaces, times]);
%discard min and sec
DateVectors(:, 5:6) = 0;
%convert back to strings
DateStrings = datestr(DateVectors);
%find unique values
unique(DateStrings)
person Dan    schedule 16.07.2012