ข้อมูลเวลาเฉลี่ย

ฉันมีอาร์เรย์สองเซลล์พร้อมข้อมูลเวลา:

นี่คือตัวอย่าง:

'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'

ฉันแค่ต้องการข้อมูลสองครั้งเหมือนกับที่ฉันทำไม่ซ้ำกัน:

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

ฉันจะมีเวลานี้เช่นกัน:

'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'

ฉันจะไปทำสิ่งนี้ได้อย่างไร


person nman84    schedule 16.07.2012    source แหล่งที่มา
comment
คุณกำลังถามอะไรที่นี่? คำถามของคุณไม่ชัดเจนเล็กน้อย   -  person mathematician1975    schedule 16.07.2012
comment
คุณควรให้บริบทและคำอธิบายเพิ่มเติม ฉันคิดว่ารายการดัชนีเดียวกันในแต่ละอาร์เรย์เป็นส่วนหนึ่งของวันที่และเวลาเดียวกัน ชื่อของคุณบอกว่าคุณต้องการค่าเฉลี่ย แต่คุณใช้เวลาขั้นต่ำ/เร็วที่สุดในวันที่กำหนด (สมมติว่าในตัวอย่างของคุณ คุณพลาดไปหนึ่งครั้ง - เวลาแรกสุดในวันที่ 11 จะเป็นรายการถัดไป)   -  person Mikeb    schedule 16.07.2012
comment
บวกกับความเห็นที่แล้ว ผลที่คาดหวังคืออะไร? โปรดยกตัวอย่างสั้นๆ ของอินพุตและเอาต์พุตที่คาดหวัง...   -  person Eitan T    schedule 16.07.2012
comment
คำถามของคุณไม่ชัดเจนโดยสิ้นเชิง อินพุตคืออะไร? เอาท์พุทคืออะไร? อะไรคือปัญหา?   -  person mwengler    schedule 16.07.2012
comment
ฉันต้องการวันและชั่วโมงนาทีและวินาทีที่ไม่ซ้ำใครไม่สำคัญกับอาร์เรย์   -  person nman84    schedule 16.07.2012


คำตอบ (2)


คุณสามารถทำได้โดยใช้ฟังก์ชัน 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'

วิธีนี้จะดึงเวลา ล่าสุด ที่เกี่ยวข้องกับแต่ละวัน หากคุณต้องการคว้า ครั้งแรก คุณสามารถใช้ฟังก์ชันนี้:

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

แปลงสตริงเป็น vecotrs โดยใช้ datevec() จากนั้นปล่อย min และ วินาทีข้อมูลและแปลงกลับเป็นสตริงเดียวโดยใช้ datestr() จากนั้น ใช้เฉพาะ()

นี่คือตัวอย่าง แต่ฉันยังไม่ได้ทดสอบ:

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