2013-08-28 2 views
2

В первенствует я помню будучи в состоянии выбрать определенную линию тренда, называется «власть», которая в соответствии с документацией:вариант трендовая (Excel) в MATLAB

«сила тренда является изогнутая линия, которая лучше всего использовать с наборами данных которые сравнивают измерения, которые возрастают с определенной скоростью - например, ускорение гоночного автомобиля с интервалом в одну секунду. Вы не можете создать линию тренда мощности, если ваши данные содержат нулевые или отрицательные значения ».

Как это реализовать в Matlab?

Например:

a = [15.5156,0.1995; 
7.6003,0.2999; 
9.4829,0.2592; 
12.2185,0.2239; 
23.4094,0.1811]; 

figure;scatter(a(:,1),a(:,2)) 

ответ

5

Here является рабочим раствором:

a = [15.5156,0.1995; 
7.6003,0.2999; 
9.4829,0.2592; 
12.2185,0.2239; 
23.4094,0.1811]; 

x = a(:, 1); 
y = a(:, 2); 
n = 2; % order of the fitted polynomial trendline 
p = polyfit(x, y, n); 
m = 1000; % number of trendline points (the larger the smoother) 
xx = linspace(min(x), max(x), m); 
yy = polyval(p, xx); 

figure; 
hold on; 
scatter(a(:,1), a(:,2)); 
plot(xx, yy, 'r-'); 

Вы можете легко поместить код трендовой калькулятор в отдельную функцию.

+0

большой, спасибо. И чтобы получить уравнение, то есть y = mx + c, я бы использовал polyfit и corrcoef? – KatyB

+0

Переменная p содержит коэффициенты многочлена. Подробности: http://www.mathworks.com/help/matlab/ref/polyfit.html – kol

3

I нанесены данные о первенствуете и добавил «власть» трендовый со следующим уравнением:

y = 0.7188 x^{-0.4513} 

, который, конечно, степенный.

Аналог в Matlab, чтобы выполнить линейную аппроксимацию на билогарифмическом преобразование данных (что объясняет ограничения, налагаемые «власть» трендовое приложение в Excel):

x = a(:, 1); 
y = a(:, 2); 

p = polyfit(log(x), log(y), 1); % <-- linear fit 

, который дает

p = 

-0.4513 -0.3302 

для наложения трендовых сделать как @kol но степенной закон:

xx = linspace(min(x), max(x), 100); 
yy = exp(p(2))*xx.^p(1); 

figure; 
hold on; 
scatter(x, y); 
plot(xx, yy, 'r-'); 

Для xx или yy с некоторыми значениями 0, когда вам понадобится сдвиг данных.

Смежные вопросы