r - 矩阵顺时针旋转 90 度
问题描述
我正在尝试构建一个f
可以以顺时针方式旋转矩阵的函数。
该函数应如下所示
f <- function(mat, k) {...}
其中mat
是矩阵,k
是我们执行 90 度顺时针旋转的次数。比方说,k=1
意味着我们将矩阵旋转 90 度,k=2
意味着 180 度,依此类推。
如果k > 1
,我想将所有这些旋转矩阵(对于 i = 1,2,....,k)保存到一个列表中,这样我就可以跟踪旋转如何演变。
提前致谢!
解决方案
我猜你可以使用rot90
from packagepracma
来实现基本的旋转功能。
下面的代码使用递归方法将所有这些旋转矩阵保存0
到k
顺时针旋转的时间
library(pracma)
f <- function(mat, k) {
if (k==0) return(list(mat))
u <- f(mat,(k-1)%%4)
c(u,list(rot90(tail(u,1)[[1]])))
}
例子
mat
给定如下矩阵
mat <- matrix(1:12,nrow = 4)
我们会看到
> f(mat,4)
[[1]]
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
[[2]]
[,1] [,2] [,3] [,4]
[1,] 9 10 11 12
[2,] 5 6 7 8
[3,] 1 2 3 4
[[3]]
[,1] [,2] [,3]
[1,] 12 8 4
[2,] 11 7 3
[3,] 10 6 2
[4,] 9 5 1
[[4]]
[,1] [,2] [,3] [,4]
[1,] 4 3 2 1
[2,] 8 7 6 5
[3,] 12 11 10 9
[[5]]
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
由于 list 的第一个元素是原始矩阵mat
,您可以通过以下方式将其删除
f(mat,k)[-1]
推荐阅读
- html - Angular styles from styles.scss are not always being applied
- mongodb - KMongo 创建多个连接
- sql - R Reticulate 函数返回 SQL 数值为
对象 - html - 如何使内容的列随图像大小缩放?
- javascript - Javascript从字符串更新对象
- python - Django/Wagtail:django-debug-toolbar 在面板上点击时出现 404 错误
- .net - 使用 .NET 连接到 AWS MQTT
- flutter - 手机桌面视图中的 Flutter Web App Weird Beahvior
- android - 选择帐户后,Google fit 卡在加载中
- r - 计算 negbin GLMM 的自协变量