2015-11-27 3 views
-1

У меня есть некоторые данные сSpline Интерполяция в R

h = c[157 144 80 106 124 46 207 188 190 208 143 170 162 178 155 163 162 149 135 160 149 147 133 146 126 120 151 74 122 145 160 155 173 126 172 93] 

Тогда я получаю локальные максимумы с функцией дифф

max = [1 5 7 10 12 14 16 20 24 27 31 33 35 36] 

У меня есть простой код MatLab, чтобы найти сплайн-интерполяции

maxenv = spline(max,h(max),1:N); 

Этот код покажет результат

maxenv = 157 86.5643152828762 67.5352696350679 84.9885891697257 124 169.645228239041 207 224.396380746179 223.191793341491 208 185.421032390413 170 172.173624690130 178 172.759468849065 163 158.147870987344 157.874968589889 159.414581897490 160 157.622863516083 153.308219179638 148.839465253375 146 146.051320982064 148.167322961480 151 153.474200222188 155.606188003845 157.685081783579 160 163.653263154551 173 186.027639098700 172 93 

Теперь я пытаюсь с R, но есть некоторые ошибки

maxenv <- spline(max, h(max), seq(N)) 

Тогда ошибка

Ошибка в xy.coords (х, у): 'х' и 'у' длины отличаются

+0

Ошибка говорит сама за себя. 'max' и' h (max) 'имеют разную длину. Прочтите '? Spline'. – shekeine

+0

Что вы используете, Matlab или R? – nico

+0

Я хочу попробовать R –

ответ

0

вы код и вопрос действительно не ясно, так что я не 100% уверен, что это то, что вы ищете:

# vector of values 

h <- c(157, 144, 80, 106, 124, 46, 207, 188, 190, 208, 143, 170, 162, 178, 155, 
     163, 162, 149, 135, 160, 149, 147, 133, 146, 126, 120, 151, 74, 122, 145, 
     160, 155, 173, 126, 172, 93) 

# local maxima 
lmax <- h[c(1, which(diff(sign(diff(h)))==-2)+1, length(h))] 

# spline calculation 
spl <- spline(1:length(lmax), lmax) 

# visual inspection 
plot(spl) 
lines(spl) 

enter image description here