Friday, March 11, 2011

How to plot derivative in R

Suppose we have two lists x and y of equal size, and we want to plot x vs y1=dy/dx. How to do this in R?

M<-read.table("tmp.txt")
x<-M[,1]
y<-M[,2]
k<-length(x)
y1<-c()
for(i in c(1:k-1)) {
t<-(y[i+1]-y[i])/(x[i+1]-x[i])
y1<-c(y1, t)
}
y1<-c(y1, t)
plot(x,y1)

2 comments:

  1. In Matlab:

    M = dlmread('tmp.txt');
    x = M(:,1);
    y = M(:,2);
    k = length(x);
    y1 = zeros(k,1);
    for i=1:k-1,
    y1(i) = (y(i+1)-y(i))/(x(i+1)-x(i));
    end
    y1(k) = y1(k-1);
    plot(x,y1);

    ReplyDelete
  2. Another version with R :
    M.diff<-apply(M,2,diff)
    derivate<-M.diff[,2]/M.diff[,1]
    plot(x,derivate)

    ReplyDelete