Построить параметрическое уравнение в Matlab - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть два набора данных: [t1 ; x] и [t2 ; y], где t s находятся в одном диапазоне для обоих, но, возможно, принимают разные значения.Простой пример:

[t1 ; x] = 
     1     2     4
     1     4    16

[t2 ; y] =
     1     3     5
     1     9    25

Здесь основные функции просты: x = t1.^2 и y = t2.^2.Моя цель - получить сюжет x против y.Поскольку значения, принятые t, не совпадают, я не могу просто использовать plot(x,y).Например, начиная с x == y, я должен получить линию наклона 1, но plot(x,y) не является прямой и ни одна часть не имеет наклона 1.

Приложение намного сложнее, чем этот простойНапример, и у меня нет основной функции для генерации точек данных.Время от времени данные редки, поэтому я не могу позволить себе потерять информацию, выбрасывая точки, которые не являются общими между t1 и t2.

Я надеюсь, что в Matlab есть некоторая встроенная функция, котораяможет взять два набора данных и извлечь зависимость между x и y, оставив t в качестве невидимого параметра.Кто-нибудь знает о такой функции?Вместо этого я открыт для предложений о том, как лучше написать его.

1 Ответ

2 голосов
/ 14 сентября 2011

Я предлагаю использовать для этого сплайны.

Учитывая tx, x, ty, y, вы можете сгенерировать график x против y для диапазона временных точек timeRange следующим образом, используя SPLINE команда:

xx = spline(tx,x,timeRange); %# interpolate x vs time
yy = spline(ty,y,timeRange); %# interpolate y vs time

plot(xx,yy);

Если базовые данные являются зашумленными, то вы можете использовать сглаживающие сплайны (например, CSAPS ), которые, однако, нуждаются в инструментальной панели Curve Fitting.

...