2014-12-23 3 views
0

Matlab имеет набор точечных операторов, таких как .*, ./, .^. Каждый из этих операторов состоит из точки и нормального алгебраического оператора. Я хотел бы перевести их в R:Как перевести точечные операторы Matlab в R?

col = round(r0 + (j/k) * lambda .* cos(pi/6))+1; 
ro = 700 - round(s0 - (j/k) * sin(phi)./cos(pi/6)) 
col = min(col):1:max(col) 
ro = min(ro):1:max(ro) 

Пожалуйста, помогите

+1

В R, в отличие от Matlab, все операции являются элементарными. – Khashaa

+2

Вам также может понравиться этот лист сравнения MATLAB/R: http://www.math.umaine.edu/~hiebeler/comp/matlabR.html –

+4

Этот вопрос кажется не по теме, поскольку он показывает недостаточные усилия для изучения основ от R –

ответ

3

Вы можете конвертировать ваши строки кода символов и использовать GSUB

a <- "col = round(r0 + (j/k) * lambda .* cos(pi/6))+1;" 
a <- gsub("\\.","",a) 

, которые вы могли бы обернуть в функцию.

Итак, вот функция, чтобы сделать это,

DotOut <- function(x) { 
gsub("\\.","",x) 
} 

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

+0

согласен с вашими изменениями @docendo и, конечно же, ваши комментарии, спасибо. – user1945827

+1

Это приведет к катастрофе каждый раз, когда есть число с плавающей запятой с точкой в ​​ней. –

+0

OP должен знать об этом ... – user1945827

4

В MATLAB, операторы точечных .*, ./, .^ обозначают поэлементно операторы, по сравнению с матричными операциями * (матричного умножением), / (решение системы уравнений XA = B для й), ^ (А * А. .. * A).

В R, операторы *, /, ^ обозначают поэлементно операции, в то время как вы используете %*% для умножения матриц.

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