Исходные данные - есть дискретные квантованные отсчеты некоторого сигнала. Мы знаем, что этот сигнал - выход некоторой механической системы, т.е. как минимум дважды дифференцируем. Более того, если надо, то мы можем априорно предположить некоторые ограничения на первую и вторую производные. Уровень квантования сигнала достаточно маленький по сравнению с диапазоном изменений сигнала. Частота дискретизации достаточно велика по сравнению со скоростью самого процесса. Скажем, дискретизация 1кГц при том, что в составе сигнала нет существенных компонент с частотами выше 50Гц.
Записанный процесс достаточно длинный - несколько сотен тысяч отсчетов, сигнал имеет совершенно произвольную форму (с учетом дифференцируемости), но преобладают низкие частоты.
Задача - как по имеющимся отсчетам оценить скорость? Какие есть оффлайновые методы? Если кто-то сможет дать ссылку на какой-то перечень или обзор, то было бы здорово. Рабочая среда - матлаб.
Я бы решал задачу так - прорядил бы отсчеты, взяв, например, каждый 20-й. Полученные отсчеты описал бы каким-то сплайном, а затем по найденному сплайну вычисли бы значения производной во всех исходных точках. Плюс - в матлабе это делается в две строчки, и если исходный сигнал достаточно гладкий, то получается приемлемая точность. Но при таком методе есть недостаток - выпадают промежуточные, прореженные точки, т.е. часть информации пренебрегается. Кто как решает, на какие методы стоит посмотреть?
тогда сразу натягивать на все точки
кубический сплайн со сглаживанием, это когда натягивается новая сетка, на этой сетке как и в обычном сплайне строятся полиномы 3й степени, с теми же неприрывностями производных, только наименьшими квадратами по исходным данным и только в наименьших квадратах еще квадрат второй производной добавляется, чтобы резко не менялся.
а зачем вообще там сплайны? считайте скорость да фильтруйте
Спасибо за наводку на сглаживающий сплайн. Не очень понял, что вы имеете ввиду под "натягиванием новой сетки", но попробую разобраться.
А что вы имеете ввиду "считайте скорость и фильтруйте"? Вопрос - как именно считать и как фильтровать?
Дополню:
Так как квантование все-таки есть, то обработка экспериментальных (как и модельных) данных показывает - брать каждый отсчет даже для сглаживающего сплайна - нехорошо. Допустим, у нас некоторая небольшая постоянная скорость. Исходный сигнал представляет из себя, соответственно. прямую. Однако из-за квантования он выглядит как пять точек на одном уровне, ступенька, пять точек на следующему уровне, ступенька, и так далее. Если все точки использовать для сглаживающего сплайна, то он будет стремиться минимизировать расстояние до всех точек и аппроксимирующая кривая будет так же похожа на ступеньки, только сглаженные. В результате оценка производной по такой кривой весьма паршивая. Если же прорядить исходный сигнал и построить сглаживающий сплайн по каждому k-ому отсчету, то это затруднение исчезает при хорошем выборе k.
Еще дополнительно: Разобрался, что проблема может быть решена выбором настраиваемого параметра при сглаживающей интерполяции. Т.е., почти такая же такая же степень свободы, как и шаг прореживания, разве что шаг можно (при большом желании) выбрать неравномерным. Есть ли какие-то рекомендации по выбору параметра в сглаживании сплайном, кроме как пробовать и смотреть?
Цитата(RHnd @ Aug 16 2013, 05:09)

А что вы имеете ввиду "считайте скорость и фильтруйте"? Вопрос - как именно считать и как фильтровать?
Y'[i] = (Y[i]-Y[i-1]) / (X[i]-X[i-1])
а дальше любой ФНЧ, z = z + (y-z)/K
Это работало бы, если бы пренебрежимо малое квантование. А так после вычисления первой разности мы получим чудовищно зашумленный сигналы, до уровня непригодности. А дальнейшая фильтровка приведет к существенной задержке.
И это не оффлайн метод.
thermit
Aug 16 2013, 16:11
Сначала ФНЧ, затем дифференцировать. ФНЧ ограничит полосу и не даст развалиться дифференцированию.
ps
Естественно, без прореживания. Прореживание без фильтрации смысла не имеет в данном случае.
Использование ФНЧ приведет к появлению задержки, что, естественно, нежелательно. Конечно, я могу пропустить сигнал через фильтр типа s/(a*s+1) или аналогичный, но смысл? Это никаким образом не использует того, что у нас уже есть все отсчеты и что мы работаем оффлайн и можем себе позволить трудоемкие вычисления.
Alex11
Aug 16 2013, 17:03
Если Вы работаете offline, то что Вам до задержки. Она фиксирована и строго определена фильтром.
Цитата
Сначала ФНЧ, затем дифференцировать. ФНЧ ограничит полосу и не даст развалиться дифференцированию.
операции линейные, от смены очерёдности результат никак не поменяется.
Цитата( @ Aug 16 2013, 22:33)

Использование ФНЧ приведет к появлению задержки, что, естественно, нежелательно. Конечно, я могу пропустить сигнал через фильтр типа s/(a*s+1) или аналогичный, но смысл? Это никаким образом не использует того, что у нас уже есть все отсчеты и что мы работаем оффлайн и можем себе позволить трудоемкие вычисления.
сделайте КИХ фильтр (у него ФЧХ линейная), сдвинув его на пол длинны, никакой задержки не будет.
Цитата(Alex11 @ Aug 16 2013, 21:03)

Если Вы работаете offline, то что Вам до задержки. Она фиксирована и строго определена фильтром.
Простите, какая задержка фиксирована и строго определна фильтром, если мы говорим о произвольной глакой форме сигнала?
UPD. Простите, понял. Вы тоже про КИХ говорили?
Цитата(_pv @ Aug 16 2013, 21:05)

сделайте КИХ фильтр (у него ФЧХ линейная), сдвинув его на пол длинны, никакой задержки не будет.
Сдвинув его на половину длины чего? Простите, я вас не понимаю.
UPD: Ага, кажется понял на счет сдвига на половину и устранение задержки. Какую форму фильтра стоит выбрать? Я сейчас поэкспериментировал с различными дифференциаторами, которые мне Matlab fdatool считает, дошел до порядка 300, но результат по качеству весьм далек от сглаживающего сплайна с хорошо выбранным коэффициентом сглаживания или с прореживанием.
thermit
Aug 16 2013, 20:16
Цитата
_pv:
операции линейные, от смены очерёдности результат никак не поменяется.
да об чем речь? Конечно не поменяется. Но тут хотят прореживать/интерполировать/дифференцировать. Дык этот подход есть есть лажа.
Цитата
RHnd:
Сдвинув его на половину длины чего? Простите, я вас не понимаю. UPD: Ага, кажется понял на счет сдвига на половину и устранение задержки. Какую форму фильтра стоит выбрать?
На половину длины импульсной х-ки фильтра. Форма никакой роли не играет (если речь идет о фнч)
Цитата(thermit @ Aug 17 2013, 00:16)

Но тут хотят прореживать/интерполировать/дифференцировать. Дык этот подход есть есть лажа.
Почему?
Цитата(thermit @ Aug 17 2013, 00:16)

Форма никакой роли не играет (если речь идет о фнч)
Под формой я имею ввиду форму АЧХ фильтра. Как так роли не играет... я, конечно, в ЦОС не особо, не моя тематика, но эксперименты показывают, что очень даже играет. На сколько я понимаю, АЧХ в полосе пропускания должна быть как можно ближе к единице и все отклонения будут сказываться.
Скажите, пожалуйста, что именно вы имеете ввиду, когда говорите "дифференцировать" применительно к задаче? Просто первая разность?
Вспомнил, что в матлабе есть такая замечательная функция
filtfilt! Можно обойтись без КИХ фильтров, использовать БИХ. Вроде, результат должен стать получше.
Цитата(RHnd @ Aug 17 2013, 03:57)

Вспомнил, что в матлабе есть такая замечательная функция filtfilt! Можно обойтись без КИХ фильтров, использовать БИХ. Вроде, результат должен стать получше.
у БИХ фазовая характеристика не линейная, соответственно задержки будут не постоянны, как в случае с КИХ, а будут зависеть от формы сигнала.
Цитата(_pv @ Aug 17 2013, 11:37)

у БИХ фазовая характеристика не линейная, соответственно задержки будут не постоянны, как в случае с КИХ, а будут зависеть от формы сигнала.
На сколько я понимаю, именно это и компенсируется функцией filtfilt. Разве нет?
thermit
Aug 17 2013, 09:38
Цитата
RHnd:
Почему?
Да зачем прореживать, чтобы потом интерполировать? Тем более, сплайном.
Оставляем сигнал на исходной частоте дискретизации, обрабатываем фнч с полосой равной полосе полезного сигнала (тем самым уменьшаем мощность шума) и потом обрабатываем ких с их [0.5 -0.5]. Чх такого фильтра близка к х-ке дифференциатора вблизи 0. Если сигнал проредить, придется использовать широкополосный дифференциатор.
Если обработка оффлайн, можно использовать бих фнч, но с 2-й фильтрацией сигнала (после 1-ой фильтрации сигнал фильтруется еще раз задом на перед). Фаза сигнала после такой фильтрации не изменится, но будет квадрат ачх. Матлабский аналог filtfilt.
1) Если в самом сигнале шумов нет и все проблемы связаны только с квантованием, то прореживание, как мне кажется, даст эффект, близкий к сглаживанию фнч, но без смещения. А потом по сглаженному сигналу оценить производную - такая была исходная идея.
2) Да, действительно, на моих модельных данных filtfilt БИХ ФНЧ + первая разность дают приличный результат. Но, все же, чуть хуже и менее гладкий, чем сглаживающий сплайн с последующим дифференцированием. Возможно, дело в том, что хорошо подобрать один сглаживающий параметр проще, чем ФНЧ. Могу выложить исходные данные.
2) Если бы речь шла про онлайн, то есть эффективные методы, практически не уступающие по фильтрации фнч+дифференциатор, но почти не дающие задержки - тот же slliding differentiator. Задача в том, что оффлайн обработка должна дать лучше результат, чем то, что можно получить онлайн.
thermit
Aug 18 2013, 19:52
Вот скрипт иллюстрирующий оценку производной при помощи fir-дифферециатора.
Код
clear all;
NB=12;%Num bits
M=20;%Num sins
N=4000;%Seq length
L=300;%Differentiators length
Fd=1000;%Sam[ling freq
Fmax=50;%Max freq
%Random phase
p=randn(1,M);
f=(1:M)*Fmax/M;
x=(0:N-1).'*2*pi*f/Fd;
x=x+repmat(p,length(x),1);
s=sum(sin(x).')/M; %Sequence
%s=s+randn(1,length(s))*0.001*std(s);
s=round(s*(2^NB))/(2^NB);% Quantization
ds=(1/M:1/M:1)*cos(x).';%Reference Derivative Sequence
h=firpm(L,[0 Fmax 1.6*Fmax Fd/2]/(Fd/2),[0 M 0 0],'differentiator');
plot(0:Fd/20000:Fd/2-Fd/20000,20*log10(abs(freqz(h,1,10000))));
grid on;
y=filter(h,1,[ s(end-L/2+1:end) s s(1:L/2+1)]);% Calculation Derivative from sequence
y=y(L+1:end-1);
disp(['Max error = ',num2str(max(abs(ds-y))/std(ds))]);%Compare with ref
Точность оценки может быть 10^-6 и круче...
Спасибо за код.
Смотрите, убираем вашу строчку
Код
s=round(s*(2^NB))/(2^NB);% Quantization
а после вычисления ds добавляем:
Код
t=(0:N-1)/Fd;
a=[2*ones(1e3,1); zeros(1e3,1); -1.95*ones(1e3,1); 2*zeros(1e3,1)];
vel=lsim(tf(1,[1 0]),a,t);
pos=lsim(tf(1,[1 0]),vel,t);
s=pos'+s;
ds=vel'+ds;
s=quant(s,range(s)/3e3);
И результаты заметно ухудшаются. Как повысить точность оценки?
Я, кстати, возможно погорячился на счет 50 Гц. Можно, наверное, 15 Гц ограничить.
thermit
Aug 19 2013, 12:09
Это была иллюстрация. Ваши поправки требуют изменений:
Код
clear all;
NB=12;%Num bits
M=20;%Num sins
N=4000;%Seq length
L=200;%Differentiators length
Fd=1000;%Sam[ling freq
Fmax=50;%Max freq
%Random phase
p=randn(1,M);
f=(1:M)*Fmax/M;
x=(0:N-1).'*2*pi*f/Fd;
x=x+repmat(p,length(x),1);
s=sum(sin(x).')/M; %Sequence
%s=s+randn(1,length(s))*0.001*std(s);
%s=round(s*(2^NB))/(2^NB);% Quantization
ds=(2*pi*f/M)*cos(x).';%Reference Derivative Sequence
t=(0:N-1)/Fd;
a=[2*ones(1e3,1); zeros(1e3,1); -1.95*ones(1e3,1); 2*zeros(1e3,1)];
vel=lsim(tf(1,[1 0]),a,t);
pos=lsim(tf(1,[1 0]),vel,t);
s=pos'+0.2*s;
ds=vel'+0.2*ds;
s=quant(s,range(s)/3e3);
h=firpm(L,[0 Fmax 1.5*Fmax Fd/2]/(Fd/2),[0 2*pi*Fmax 0 0],'differentiator');
plot(0:Fd/20000:Fd/2-Fd/20000,20*log10(abs(freqz(h,1,10000))));
grid on;
y=filter(h,1,[ s(end-L+1:end) s s(1:L)]);% Calculation Derivative from sequence
y=y(L+1+L/2:end-L/2);
disp(['Mean error = ',num2str(std((ds(L/2:end-L/2+1)-y(L/2:end-L/2+1)))/std((ds)))]);%Compare with ref
Цитата(RHnd @ Aug 16 2013, 02:09)

Дополню:
Допустим, у нас некоторая небольшая постоянная скорость. Исходный сигнал представляет из себя, соответственно. прямую. Однако из-за квантования он выглядит как пять точек на одном уровне, ступенька, пять точек на следующему уровне, ступенька, и так далее. Если все точки использовать для сглаживающего сплайна, то он будет стремиться минимизировать расстояние до всех точек и аппроксимирующая кривая будет так же похожа на ступеньки, только сглаженные. В результате оценка производной по такой кривой весьма паршивая. Если же прорядить исходный сигнал и построить сглаживающий сплайн по каждому k-ому отсчету, то это затруднение исчезает при хорошем выборе k.
Но Вы же не можете знать, как на самом деле ведет себя система. Может, скорость не постоянная, и там, где Вы видите ступеньку, а думаете, что там прямая, там ступенька и есть на самом деле.
Цитата(thermit @ Aug 19 2013, 16:09)

Это была иллюстрация. Ваши поправки требуют изменений:
Спасибо!
У меня пара вопросов осталось, если не трудно:
1) Из каких соображений L=300 заменили на L=200? И отсечение с 1.6*Fmax на 1.5*Fmax?
2) Почему
Код
y=filter(h1,1,[ s(end-L+1:end) s s(1:L)]);
а не, например,
Код
y2=filter(h1,1,[ s(1:L) s s(end-L+1:end)]);
Мне упраженения показывают, что второй лучше дает результаты, нет колебаний в начале и конце отрезка, но я от ЦОС далек и не знаю.
UPD: Есть, правда, один недостаток. Если теперь в примере убрать синусоидальные компоненты и оставить только ускоренное движение (s=pos'+0*s;
ds=vel'+0*ds), то результрующая оценка скорости будет сильно колебаться вокруг истинного знаечния. Предполагаю, что это как раз из-за квантования. Как быть в этом случае?
Цитата(Tanya @ Aug 19 2013, 17:14)

Но Вы же не можете знать, как на самом деле ведет себя система. Может, скорость не постоянная, и там, где Вы видите ступеньку, а думаете, что там прямая, там ступенька и есть на самом деле.
В общем случае это совершенно справедливое замечание.
В тех конкретных примерах, которые я держу в голове и моделирую, речь идет именно о невыскоих скоростях. Это можно косвенно оценить, например, по физическому смыслу эксперимента и по другим наблюдаемым состояниям. При оценке скорости я хотел задать это как ограничение на ускорение, что, в принципе, срабатывает при использовании сглаживающего сплайна. При использовании фильтров такое ограничение, видимо, должно регулироваться через настройку полосы пропускания.
Цитата(RHnd @ Aug 19 2013, 18:34)

В общем случае это совершенно справедливое замечание.
В тех конкретных примерах, которые я держу в голове и моделирую, речь идет именно о невыскоих скоростях. Это можно косвенно оценить, например, по физическому смыслу эксперимента и по другим наблюдаемым состояниям. При оценке скорости я хотел задать это как ограничение на ускорение, что, в принципе, срабатывает при использовании сглаживающего сплайна. При использовании фильтров такое ограничение, видимо, должно регулироваться через настройку полосы пропускания.
Если сделать ограничения на ускорение и скорость, то такой алгоритм будет нелинейным... А все Ваши фильтры...
И мелкие ступеньки могут скрывать все, что угодно. Их никаким образом невозможно "правильно приукрасить"
Tanya, простите, а в чем смысл вашего коментария?
Вы считаете, что методы (сглаживающий сплайн, фильтр) не позволяют ограничить ускорение и/или высокочастотные компоненты аппроксимирующей кривой? Или считаете, что неправильно их ограничивать основываясь на физическом смысле процесса?
thermit
Aug 20 2013, 12:55
Цитата
RHnd:
1) Из каких соображений L=300 заменили на L=200? И отсечение с 1.6*Fmax на 1.5*Fmax?
Можно чуть повысить точность меняя х-ки дифференциатора. Но вообще-то - ловля блох...
Цитата
2) Почему
Код
y=filter(h1,1,[ s(end-L+1:end) s s(1:L)]);
а не, например,
Код
y2=filter(h1,1,[ s(1:L) s s(end-L+1:end)]);
Непринципиально. В любом случае в начале и в конце отсчеты числом равным половине длины дифференциатора будут кривыми.
Цитата
Есть, правда, один недостаток. Если теперь в примере убрать синусоидальные компоненты и оставить только ускоренное движение (s=pos'+0*s;
ds=vel'+0*ds), то результрующая оценка скорости будет сильно колебаться вокруг истинного знаечния. Предполагаю, что это как раз из-за квантования. Как быть в этом случае?
ФНЧ, ограничивающий полосу полезного сигнала
например
Код
[b,a]=butter(6,0.25*Fmax/Fd);
y=filtfilt(b,a,y);
Но если взять такой фнч, то при наличии синусоидальных компонент, он их съест.
На данный момент я пришел к выводу, что при налчии среднечастотных колебаний стоит использовать один метод (дифференциатор со сдвигом), а если таких колебаний нет и появляются ступеньки из-за квантования, то другой метод (предварительный фнч или сгл. сплайны). К сожалению, пока у меня не получилось сформирвать метод, который хорошо работал бы и в том случае, и в другом. Жаль.
Большое спасибо за помощь!
Цитата(thermit @ Aug 20 2013, 16:55)

Непринципиально. В любом случае в начале и в конце отсчеты числом равным половине длины дифференциатора будут кривыми.
Да, но степень кривизны получается разная. Возможно, еще лучше поставить x(1)*ones(1,L) - тогда хотя бы разрыва фильтруемого сигнала не будет. А вообще, конечно, к недостаткам метода надо отнести, что L точек теряется. На больших данных это фигня, конечно, но все же.
Цитата(RHnd @ Aug 19 2013, 21:17)

Tanya, простите, а в чем смысл вашего коментария?
Вы считаете, что методы (сглаживающий сплайн, фильтр) не позволяют ограничить ускорение и/или высокочастотные компоненты аппроксимирующей кривой? Или считаете, что неправильно их ограничивать основываясь на физическом смысле процесса?
Это я к тому, что вот, допустим, имеется длинная ступенька в один квант расстояния. Никакими сглаживаниями нельзя восстановить "правильную скорость". Ограничение на скорость даст только небольшое уменьшение пространства.
У Вас ведь реальная система подчиняется "правилам", поэтому все ступеньки уже должны быть "правильными".
Вы же, насколько я понимаю Вас, не считаете измерения зашумленными, когда всякие там методы фильтрации были бы уместны... Через Ваши ступеньки можно провести сколько угодно сколь угодно гладких кривых, удовлетворяющих "правилам" - с ограниченной первой и второй производными. Почти всегда.
Я не пойму, к чему вы ведете. Вы считаете, что рассмотренные методы по каким-то причинам нельзя использовать? Или хотите предложить более удачные решения?
Да, существует множество кривых с ограниченными производными, которые после квантования дадут одинаковый набор измерений, это очевидно.
Если я вижу набор ступенек, то буду искать движение с малым интегралом квадрата ускорения (ну или с отстутсвующими среднечастотными составляющими). Логика простая - проще предположить отсутствие колебаний, чем такие специальные колебания переменной частоты, что их не видно в измерениях. В зависимости от штрафа за ускорение или полосы пропускания я, естественно, буду получать разные кривые, но они будут близки друг к другу. Если же я увижу осцилляции в измерениях, то буду искать движение, в котором есть среднечастотные компоненты.
Придумалась такая возможная идея.
Параметризуем алгоритм аппроксимации некоторым параметром Q . Это может быть или штраф за ускорение, или полоса пропускания фнч. Чем Q меньше, тем более сглаженный и низкочастотный сигнал получается на выходе. Далее этот выходной сигнал квантуем с известным шагом квантования. И считаем отклонение исходного сигнала от проквантованного сглаженного. Далее два варианта: либо найти наименший Q, при котором имеем нулевой отклонение, либо минимизировать некоторый критерий, сочетающий норму отклонения и штраф за величину Q.
Т.е. найти самую низкочастотную кривую, которая после квантования будет близка к исходному сигналу.
UPD: Действительно, я сейчас промоделировал - работает, по первым прикидкам, очень неплохо. И для сигналов с среднечастотными колебательными компонентами, и без таких - один и тот же код выдает очень хорошую оценку скорости. Уф.
Цитата(RHnd @ Aug 20 2013, 19:59)

Я не пойму, к чему вы ведете. Вы считаете, что рассмотренные методы по каким-то причинам нельзя использовать? Или хотите предложить более удачные решения?
Да что там мудрить... Проводите ломаную между точками - наклон - это скорость. Получается лестница со ступеньками. Ускорение только в точках квантования будет бесконечным. Модифицируем картинку - вертикальные кусочки меняем на наклонные (с максимальным наклоном) - вот и поправили. Если у Вас имеются априорные данные о связи ускорения со скоростью или координатой, - учитываем это.
Это вы мне первую разность предложили использовать? Шутите, что ли? Или тонкий сарказм?
Это не задача ЦОС, это задача идентификации динамической системы и построения оптимального наблюдателя за вектором состояния системы.
Цитата(TSerg @ Aug 21 2013, 10:57)

Это не задача ЦОС, это задача идентификации динамической системы и построения оптимального наблюдателя за вектором состояния системы.
Да, если бы решалась онлайн. Как я уже писал выше, для этой задачи есть хорошие онлайн методы в теории управления.
Кстати, задача несколько отличается от стандартной задачи наблюдателя, так как вход системы не измеряем. Тут потребуются некоторые более advanced методы. А задчи идентификации я тут вообще не вижу, так как нет неизвестных параметров, которые требовалось бы идентифицировать.
Но я предположил, что, возможно, есть какие-то методы из смежних областей, например ЦОС, о которых я не знаю, но они могут хорошо сработать в оффлайн.
Цитата(RHnd @ Aug 20 2013, 20:37)

Это вы мне первую разность предложили использовать? Шутите, что ли? Или тонкий сарказм?
Нисколечко...
Вот если бы у Вас была модель, то Вы бы могли обучить нейронную сеть или какую-нибудь искаженную (женскую) логику.
Это если бы Вы знали какие-то зависимости и ограничения на функцию и ее производные.
А если не знаем, то может быть любое, построение которого я и предложила. Если результат Вы отвергаете, значит знаете нечто априори, что отвергает такое решение.
А искать философскую формулу - задача для алматематики.
>Да, если бы решалась онлайн.
Не имеет значения - офф или он.
Если параметры модели известны - на основе обратной модели вычисляете вход, затем на основе входа и прямой модели - ненаблюдаемые переменные состояния.
Цитата(TSerg @ Aug 21 2013, 11:38)

Если параметры модели известны - на основе обратной модели вычисляете вход, затем на основе входа и прямой модели - ненаблюдаемые переменные состояния.
Модель - два интегратора с неизвестным сигналом на входе. Какая такая обратная модель? Дифференциатор второго порядка? Так задача и сформулирована - как по набору измерений провести дифференцирование хотя бы первого порядка. А вы предлагаете сразу восстанавливать оценку входа (ускорения). Как?
Цитата(Tanya @ Aug 21 2013, 11:13)

Вот если бы у Вас была модель, то Вы бы могли обучить нейронную сеть ...
Если бы у меня была какая-то более информативная модель, чем два интегратора, а, еще лучше, какие-то входные сигналы этой какой-то модели, то я бы, как правильно пишет
TSerg, рассматривал бы задачу в контексте идентификации и построения некоторого наблюдателя. Но у меня нет ни того, ни другого. Давайте оставаться в рамках постановки задачи.
Цитата(Tanya @ Aug 21 2013, 11:13)

Это если бы Вы знали какие-то зависимости и ограничения на функцию и ее производные.
А если не знаем, то может быть любое, построение которого я и предложила. Если результат Вы отвергаете, значит знаете нечто априори, что отвергает такое решение.
Пожалуйста, прочитайте тему с начала. Там есть про ограничения на значения скорости и усорения, про ограничения на частотные компоненты (что будет порушено при взятии первой разности). И даже немного про выбор кривой из семейства за счет штрафа на ускорение. Более того, уже было предложение использовать первую разность. И был мой ответ.
Цитата(Tanya @ Aug 21 2013, 11:13)

какую-нибудь искаженную (женскую) логику.
Давайте воздерживаться от таких высказываний.
Цитата(RHnd @ Aug 21 2013, 12:13)

Пожалуйста, прочитайте тему с начала. Там есть про ограничения на значения скорости и усорения, про ограничения на частотные компоненты (что будет порушено при взятии первой разности). И даже немного про выбор кривой из семейства за счет штрафа на ускорение. Более того, уже было предложение использовать первую разность. И был мой ответ.
Давайте воздерживаться от таких высказываний.
Если бы Вы тоже внимательно читали, то воздержались бы от подобных высказываний. Я предлагала сглаживать ступеньки с учетом ограничений.
Вот тогда и симулируйте - случайное значение ускорения (или еще какие условия от положения или скорости) интегрируем (знаем идеальную скорость), интегрируем второй раз - идеальное положение, квантуем и получаем наблюдаемый сигнал...
И тренируем женскую логику или имитатор кусочка мозга. Вот что я и предлагала.
А чем Вам не нравятся мои высказывания?
Цитата(Tanya @ Aug 21 2013, 12:50)

Вот тогда и симулируйте - случайное значение ускорения (или еще какие условия от положения или скорости) интегрируем (знаем идеальную скорость), интегрируем второй раз - идеальное положение, квантуем и получаем наблюдаемый сигнал...
И тренируем женскую логику или имитатор кусочка мозга. Вот что я и предлагала.
Т.е. вы прелагаете построить и обучить некоторую нейронную сеть, которая по набору квантованных измерений положения будет выдавать хорошую и не сдвинутую оценку скорости, так? И будет хорошо работать во всем диапазоне входных сигналов? Я с нейронными сетями знаком очень поверхностно, но в области управления не припомню никаких работ, где бы использовались дифференциаторы, построенные на нейронных сетях. Можете указать такие статьи/книги? Или сами что-то подобное делали?
Пожалуйста, не надо писать про женскую логику. Мне неприятно.
Цитата(RHnd @ Aug 21 2013, 13:03)

будет выдавать хорошую и не сдвинутую оценку скорости, так? И будет хорошо работать во всем диапазоне входных сигналов?
Пожалуйста, не надо писать про женскую логику. Мне неприятно.
Вот у меня нет критерия "хорошести". Ведь квантование искажает картинку. Даже если бы квантование по ординате было более мелкое, квантование по времени внесет всегда ошибку в вычисление скорости и ускорения.
Если нет ограничений, то невозможно получить ничего хорошего. Чем теснее ограничения, тем лучше будет получаться. Но ведь нет другого пути?
Хорошо, буду использовать alias (или эвфемизм) - FUZZY.
Сети очень давно не трогала... Когда-то были free пакеты.
Цитата(Tanya @ Aug 21 2013, 13:21)

Вот у меня нет критерия "хорошести". Ведь квантование искажает картинку. Если нет ограничений, то невозможно получить ничего хорошего. Чем теснее ограничения. тем лучше будет получаться. Но ведь нет другого пути?
Видимо, я раньше не достаточно отчетливо высказал мысль, что из множества кривых, описывающий квантованные данные, я хочу выбрать ту, где наименьший квадрат ускорения. Или где наименьший вклад компонентов с б
ольшими частотами. Т.е. если две кривые описывают квантованные данные, но у одной существенно преобладают низкие частоты, а у другой заметно присутствуют среднечастотные, то первая кривая лучше. Вот такой у меня критерий "хорошести", который проистекает из физическиой природы сигнала.
Цитата(Tanya @ Aug 21 2013, 13:21)

Сети очень давно не трогала... Когда-то были free пакеты.
Я же не про пакеты спрашивал, их бесплатность меня на данном этапе вообще не волнует. Я спрашивал, известны ли вам успешные примеры использования нейронных сетей для решения поставленной задачи. Из литературы или из личного опыта. Мне - не известны.
Цитата(RHnd @ Aug 21 2013, 13:35)

Видимо, я раньше не достаточно отчетливо высказал мысль, что из множества кривых, описывающий квантованные данные, я хочу выбрать ту, где наименьший квадрат ускорения. Или где наименьший вклад компонентов с большими частотами. Т.е. если две кривые описывают квантованные данные, но у одной существенно преобладают низкие частоты, а у другой заметно присутствуют среднечастотные, то первая кривая лучше. Вот такой у меня критерий "хорошести", который проистекает из физическиой природы сигнала.
Я же не про пакеты спрашивал, их бесплатность меня на данном этапе вообще не волнует. Я спрашивал, известны ли вам успешные примеры использования нейронных сетей для решения поставленной задачи. Из литературы или из личного опыта. Мне - не известны.
Что значит выбрать с наименьшим квадратом ускорения? Если Вы знаете, в каких пределах лежит реальное ускорение. то из этого и нужно исходить. Вы еще можете наложить ограничение на третью производную при моделировании. А что до частот, то при дифференцировании всегда возрастают высокочастотные компоненты...
Про сети. Я такие примеры знаю, но это коммерческий проект. Не скажу. Сеть ведь не знает ничего про физический смысл... Берет себе разности... Вы еще в данном случае должны определиться с временным интервалом. Если ускорение скачет раз в секунду, то это тоже нужно учесть, выбирая правильное число точек в секунду для анализа.
Цитата(Tanya @ Aug 21 2013, 13:46)

Что значит выбрать с наименьшим квадратом ускорения?
Минимизировать штраф, пропорциональный интегралу квадрата ускорения.
Цитата(Tanya @ Aug 21 2013, 13:46)

А что до частот, то при дифференцировании всегда возрастают высокочастотные компоненты...
Цитата(Tanya @ Aug 21 2013, 13:46)

Я такие примеры знаю, но это коммерческий проект. Не скажу.
Цитата(Tanya @ Aug 21 2013, 13:46)

Если ускорение скачет раз в секунду, то это тоже нужно учесть, выбирая правильное число точек в секунду для анализа.
Спасибо, я вас понял.
Цитата(RHnd @ Aug 21 2013, 14:27)

Минимизировать штраф, пропорциональный интегралу квадрата ускорения.
А откуда такие условия? Вот если у нас есть две "точные" точки (время, координата), то мы уверенно можем сказать, что средняя скорость равна (Вы будете смеяться?) разности координат, деленной на разность времен. Мы можем положить скорость константой на этом интервале - соответственно, ускорение равно нулю (прекрасно), но для следующей точки, если мы будем придерживаться этого подхода, придется принять, что ускорение сделало дельтаобразный выброс. а потом опять стало постоянным... нулем.
Не нравится? Берем три точки. По ним можно точно определить начальную скорость и ускорение (если мы положим его постоянным). Таким образом, ничего не удается минимизировать.
Рискну предположить, что речь идет, к примеру, об [электро]приводе чего-либо, с фиксацией значений угловой или линейной координаты.
Это не совсем двойное интегрирование, но допустить можно.
Будьте смелее в части технического описания задачи и условий.

P.S.
Было бы неплохо скинуть реализацию процесса, хоть бы и в приват - если данные жутко секретные
Цитата(TSerg @ Aug 21 2013, 15:20)

Рискну предположить, что речь идет, к примеру, об [электро]приводе чего-либо, с фиксацией значений угловой или линейной координаты.
Это не совсем двойное интегрирование, но допустить можно.
А принципиально? Хорошо, пусть это будет выход электропривода - двойное интегрирование неизвестного неизмеряемого момента, деленного на момент инерции. Или пусть это будет линейный гидропривод - двойное интегрирование неизвестной неизмеряемой силы, деленной на массу. Мне кажется, это никак не упрощает, да и вообще не меняет исходной задачи. Нет?
Если мы ведем речь о динамической, возможно упрощенно линейной системе, то методы идентификации ее параметров или уточнения их давным давно изучены.
Есс-но, нужна более правдоподобная модель, чем просто два интегратора, но даже и такой случай не критичен.
Что это дает?
Это дает правильное понимание методических и алгоритмических возможностей по извлечению полезных (внутренних) сигналов из выходных наблюдаемых координат.
Каким бы ни был вход, корреляционная функция выхода хорошо будет известна в рамках принятой модели, а ее уточнение - чисто техническая задача.
И опирается такой подход на теорию динамических систем, классический стат. аппарат и предельные теоремы.
Если говорить о теоретико-методическоих подходах, то это два основных: метод пространства состояний и метод ошибки предсказания.
P.S.
Заодно уж найдите и почитайте о "традиционном" подходе, предложенным Тихоновым Андреем Николаевичем в его трудах "Методы решения некорректных задач", Наука 1974-1979
P.P.S.
Задача ЦДС давным давно решена разными способами в рамках тех же ПВО и ПРО, иначе бы С-300 промахивались
В целом, все ваши рассуждения об известной динамической моедли и тому подобном - справедливы. Но это все - общие слова. Я испытываю некоторые сомнения, что они существенно пригодятся для решения данной задачи. Какие методические и алгоритмические возможности можно вытащить из этой информации, которых нет в изначальной постановке задачи?
Цитата(TSerg @ Aug 21 2013, 15:44)

Задача ЦДС давным давно решена разными способами в рамках тех же ПВО и ПРО, иначе бы С-300 промахивались

Я интересуюсь оффлайновыми методами, которые, по моему убеждению, могут дать более точную оценку скорости, так как используют больший объем информации, в том числе информацию из будущего, которая онлайновым методам недоступна.
Цитата(TSerg @ Aug 21 2013, 15:44)

Заодно уж найдите и почитайте о "традиционном" подходе, предложенным Тихоновым Андреем Николаевичем в его трудах "Методы решения некорректных задач", Наука 1974-1979
Постараюсь посмотреть. Что-то конкретно, или всю книгу вообще?
Выкладываю данные. Это модельные данные, так что исходная скорость известна. Тут t - время, x1, w1 - положение и скорость в первом эксперименте, x2, w2 - положение и скорость во втором эксперименте, quant_size - размер кванта. Отличаются два эксперимента наличием среднечастотных составляющих, до 50 Гц. Я ищу метод, который в обоих случаях дает оценку, близкую к модельной скорости. Пока лучше всего себя показывает подход, который я описал в сообщении #27. Полученные этим методом скорости в переменных est_w1, est_w2.
thermit
Aug 21 2013, 13:13
Цитата
Постараюсь посмотреть. Что-то конкретно, или всю книгу вообще?
4-я глава 6 параграф.
Цитата(thermit @ Aug 21 2013, 17:13)

4-я глава 6 параграф.
Спасибо, посмотрел. На сколько я с наскоку понял, это просто о регуляризации. Т.е. сглаживающий сплайн тоже является частным случаем подхода, рассмторенного в книге. А параметр регуляризации альфа предлагается выбирать "по невязке", т.е., если я правильно понял, подбором.
Из новомодных - Hilbert–Huang transform (HHT):
empirical mode decomposition (EMD) + intrinsic mode functions (IMF)
(огибающие сглаживаются кубическим сплайном или скользящим квадратичным полиномом).
Еще можно взглянуть на Майстренко, Старовойтов "ЦДС с применениме многоточечных методов" и др. их работы. НГУ, Томск
thermit
Aug 21 2013, 14:21
Цитата
RHnd:
Спасибо, посмотрел. На сколько я с наскоку понял, это просто о регуляризации. Т.е. сглаживающий сплайн тоже является частным случаем подхода, рассмторенного в книге. А параметр регуляризации альфа предлагается выбирать "по невязке", т.е., если я правильно понял, подбором.
Да. В любом случае все действия сводятся к аппроксимации исходной последовательности гладкой функцией. Суть низкочастотная фильтрация.
Цитата(TSerg @ Aug 21 2013, 17:55)

Из новомодных - Hilbert–Huang transform (HHT):
empirical mode decomposition (EMD) + intrinsic mode functions (IMF)
Выглядит интересно. К сожалению, вряд ли я стану сам это программировать, а готовых пакетов в матлабе не нашел.
Цитата(TSerg @ Aug 21 2013, 17:55)

Еще можно взглянуть на Майстренко, Старовойтов "ЦДС с применениме многоточечных методов" и др. их работы. НГУ, Томск
Онлайн.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.