Я пытаюсь построить временной ряд, который был собран со скоростью 44100 Гц. Я хотел бы иметь время (в секундах) и, возможно, дату на оси х.Matlab: график временных рядов для данных 44100 Гц.
Скажем, у меня есть данные за одну минуту, то есть 2646001 точек данных и предположим для простоты, все точки данных являются те:
y=repmat(1,2646001,1);
Я создал вектор даты чисел путем преобразования даты начала и окончания в серийные номера даты, а затем создать вектор из первого числа времени до последнего числа времени с частотой 44100Ца:
StartTimeNum = datenum(2013,11,12,23,00,0);
EndTimeNum = datenum(2013,11,12,23,01,0);
T = EndTimeNum-StartTimeNum;
TimeNum = StartTimeNum:(T/length(y)):EndTimeNum;
Я тогда определить формат, я хотел бы строку даты, чтобы быть в и преобразовании вектора числа раз в строку времени.
FormatOut = 'dd/mm/yy, HH:MM:SS.FFF';
TimeStr= datestr(TimeNum, FormatOut);
но теперь TimeStr является < 2646001x22 символ>, а не < 2646001x1 полукокса>, который Matlab не позволяет мне использовать в качестве входных данных для оси х.
В другой попытке я нашел класс timeseries (http://www.mathworks.co.uk/help/matlab/ref/timeseries.plot.html), который был бы идеальным, но поскольку мои данные в 44100 Гц, я не уверен, как определить единицы (ts1.TimeInfo.Units), которые в общем описаны как «дни» или «часы» или «секунды», но не в hz ...
Есть ли способ обойти это?
Благодаря
Просто подсказка, MATLAB имеет команду 'ones', которая делает то, что вы сделали с' repmat' намного быстрее. – Phonon
Да, вы правы, я просто не думал об этом в то время. – user2895146