Карта эллипсов дисперсии по мат. ожиданию, осям и углу

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Карта эллипсов дисперсии по мат. ожиданию, осям и углу

Сообщение nickleb » 21 окт 2015, 05:50

Здравствуйте. Кто-нибудь имел опыт в R рисования карты эллипсов дисперсии по мат. ожиданию, осям и углу между его главной осью и мат. ожиданием? Примерно как:
www.pmel.noaa.gov/maillists/tmap/ferret ... 00315.html
Последний раз редактировалось nickleb 21 окт 2015, 07:09, всего редактировалось 5 раз.

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Карта эллипсов дисперсии по мат. ожиданию, осям и углом

Сообщение Denis Rykov » 21 окт 2015, 05:52

403
Spatial is now, more than ever, just another column- The Geometry Column.

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Карта эллипсов дисперсии по мат. ожиданию, осям и углом

Сообщение nickleb » 21 окт 2015, 05:55

Denis Rykov писал(а):403
Denis, исправил ссылку...

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Карта эллипсов дисперсии по мат. ожиданию, осям и углом

Сообщение Максим Дубинин » 21 окт 2015, 06:44

nickleb писал(а):исправил ссылку
нет
пристегивайтесь, турбулентность прямо по курсу

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Карта эллипсов дисперсии по мат. ожиданию, осям и углом

Сообщение nickleb » 21 окт 2015, 06:54

Максим Дубинин писал(а):
nickleb писал(а):исправил ссылку
нет
извините... вот так сейчас: и здесь, и в первом сообщении темы:
www.pmel.noaa.gov/maillists/tmap/ferret ... 00315.html

gamm
Гуру
Сообщения: 4067
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1062
Ваше звание: программист
Откуда: Казань

Re: Карта эллипсов дисперсии по мат. ожиданию, осям и углом

Сообщение gamm » 21 окт 2015, 17:25

Код: Выделить всё

my.ellipse<-function(x0,y0,a,b,ell.angle,ell.segm=48,print=TRUE) {
  # horisonl ellipse
  xy<-matrix(ncol=2,nrow=ell.segm+1)
  for(i in 1:ell.segm) {
    ang<-2*pi/ell.segm
    x<-cos((i-1)*ang)*a
    y<-sin((i-1)*ang)*b
    xy[i,]<-c(x,y)
  }
  xy[ell.segm+1,]<-xy[1,]
  
  # turn ellipse
  ell.sin<-sin(ell.angle/180*pi)
  ell.cos<-cos(ell.angle/180*pi)
  mtr<-matrix(c(ell.cos,ell.sin,-ell.sin,ell.cos),ncol=2,nrow=2)
  xy1<-t((mtr %*% t(xy)) + c(x0,y0))
  if(print) points(xy1,type="l",lwd=3)
  invisible(xy1)
}

pos<-expand.grid(1:10*10,1:5*10)
plot(0,0,xlim=c(0,105),ylim=c(0,55),asp=1,type="n")
for(i in 1:nrow(pos)) {
  x0<-pos[i,1]        # center position 
  y0<-pos[i,2]        # center position 
  a<-runif(1,0.1,5)   # "main" semiaxis
  b<-runif(1,0.1,5)   # "secondary" semiaxis
  ang<-runif(1,0,360) # angle
  my.ellipse(x0,y0,a,b,ang,ell.segm=48,print=TRUE)
}

главная полуось горизонтальна, поворот - против часовой от горизонтали.

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Карта эллипсов дисперсии по мат. ожиданию, осям и углом

Сообщение nickleb » 21 окт 2015, 18:04

gamm писал(а):

Код: Выделить всё

my.ellipse<-function(x0,y0,a,b,ell.angle,ell.segm=48,print=TRUE) {
  # horisonl ellipse
  xy<-matrix(ncol=2,nrow=ell.segm+1)
  for(i in 1:ell.segm) {
    ang<-2*pi/ell.segm
    x<-cos((i-1)*ang)*a
    y<-sin((i-1)*ang)*b
    xy[i,]<-c(x,y)
  }
  xy[ell.segm+1,]<-xy[1,]
  
  # turn ellipse
  ell.sin<-sin(ell.angle/180*pi)
  ell.cos<-cos(ell.angle/180*pi)
  mtr<-matrix(c(ell.cos,ell.sin,-ell.sin,ell.cos),ncol=2,nrow=2)
  xy1<-t((mtr %*% t(xy)) + c(x0,y0))
  if(print) points(xy1,type="l",lwd=3)
  invisible(xy1)
}

pos<-expand.grid(1:10*10,1:5*10)
plot(0,0,xlim=c(0,105),ylim=c(0,55),asp=1,type="n")
for(i in 1:nrow(pos)) {
  x0<-pos[i,1]        # center position 
  y0<-pos[i,2]        # center position 
  a<-runif(1,0.1,5)   # "main" semiaxis
  b<-runif(1,0.1,5)   # "secondary" semiaxis
  ang<-runif(1,0,360) # angle
  my.ellipse(x0,y0,a,b,ang,ell.segm=48,print=TRUE)
}

главная полуось горизонтальна, поворот - против часовой от горизонтали.
Ваш пример сработал, gamm. Спасибо! Буду пробовать адаптировать для себя.

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя