При сравнении двух векторов просто вычислить угол между ними, но в R заметно эффективнее вычислить угол между вектором и матрицей векторов.
Скажем, у вас есть двумерный вектор A = (2, 0), а затем матрица B = {(1,3), (-2,4), (-3, -3), (1, -4) }. Я заинтересован в разработке наименьшего угла между A и векторами в B.
Если я попытаюсь использовать
min(acos( sum(a%*%b) / ( sqrt(sum(a %*% a)) * sqrt(sum(b %*% b)) ) ))
это терпит неудачу, поскольку они являются несоответствующими аргументами.
Существует ли какой-либо код, подобный приведенному выше, который может обрабатывать вектор и матрицу?
Примечание: рискуя быть отмеченным как дубликат, решения, найденные в нескольких источниках , не применимы в этом случае
Редактировать: Причина этого в том, что у меня большая матрица X
, а A
- это всего лишь одна строка этого. Я сокращаю количество элементов, основываясь исключительно на углах каждого вектора. Первый элемент B
является первым в X
, а затем, если угол между любым элементом в B
и следующим элементом X[,2]
(здесь A
) больше определенного допуска, это добавляется к списку B
. Я просто использую B<-rbind(B,X[,2])
для этого, поэтому B
является матрицей.