对于m-by-m(square)数组,如何将所有行连接成大小为m ^ 2的列向量?
更新到 ruby 3.1.2 和 Rails 7.0.2.3 后
启动 Rails 应用程序时出现以下错误:
`require': cannot load such file -- matrix (LoadError)
Run Code Online (Sandbox Code Playgroud)
可能的解决方案是什么,提前致谢。
我正在编写R代码来创建一个方阵.所以我的方法是:
我的问题很简单:预先分配这个矩阵的最佳方法是什么?到目前为止,我有两种方式:
> x <- matrix(data=NA,nrow=3,ncol=3)
> x
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA
Run Code Online (Sandbox Code Playgroud)
要么
> x <- list()
> length(x) <- 3^2
> dim(x) <- c(3,3)
> x
[,1] [,2] [,3]
[1,] NULL NULL NULL
[2,] NULL NULL NULL
[3,] NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
据我所知,前者比后者更简洁.此外,前者用NA填充矩阵,而后者填充NULL.
这是"更好"的方法吗?在这种情况下,我将"更好"定义为"更好的性能",因为这是统计计算,并且此操作将在大型数据集中进行.
虽然前者更简洁,但理解起来并不令人惊讶,所以我觉得这可能是两种方式.
另外,R中NA和NULL之间有什么区别??NA和?NULL告诉我"NA"的长度为"1",而NULL的长度为"0" - 但这里有更多吗?还是最佳做法?这将影响我用于创建矩阵的方法.
matrix_* matrix_insert_values(int n; double a[][n], int m, int n)
{
matrix_* x = matrix_new(m, n);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
x->v[i][j] = a[i][j];
return x;
}
Run Code Online (Sandbox Code Playgroud)
我的测试矩阵的例子
double in[][3] = {
{ 12, -51, 4},
{ 6, 167, -68},
{ -4, 24, -41},
{ -1, 1, 0},
{ 2, 0, 3},
};
Run Code Online (Sandbox Code Playgroud)
我有点迷茫,我无法弄清楚什么是"int n;" 在我的参数声明中,它适用于C,但C++不允许这种实现.我想了解这是如何工作的,因为我要将此代码迁移到c ++.谢谢
我们习惯于在Matlab中使用不同形式的索引:
乍一看,似乎这些形式是独占的:索引是标准的,逻辑的或线性的.然而,有时似乎在这些形式中的几种之间存在混合.例如,
>> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
>> A(A>5)
ans =
8
9
6
7
Run Code Online (Sandbox Code Playgroud)
这是合乎逻辑的索引,对吧?但它也具有线性索引的一些功能,因为返回了列向量.实际上,逻辑索引A>5与线性索引具有相同的效果find(A>5).
作为第二个例子,考虑一下
>> A = magic(3)
A =
8 1 6
3 5 7
4 9 2
>> A(1:2, [true false true])
ans =
8 6
3 7
Run Code Online (Sandbox Code Playgroud)
在此表达式中,标准(整数值)索引用于第一个坐标,逻辑索引用于第二个坐标.
这些例子(以及在实践中出现的更复杂的例子)提出了以下问题:
计算矩阵的特征值有多贵?
最佳算法的复杂性是什么?
如果我有一个1000 x 1000的矩阵,在实践中需要多长时间?我认为如果矩阵稀疏会有帮助吗?
是否存在特征值计算不会终止的情况?
在R,我可以计算特征值,如下面的玩具示例所示:
m<-matrix( c(13,2, 5,4), ncol=2, nrow=2 )
eigen(m, only.values=1)
$values
[1] 14 3
Run Code Online (Sandbox Code Playgroud)
有谁知道它使用什么算法?
是否还有其他(开源)软件包可以计算特征值?
你怎么用R中的矩阵制作图像?
矩阵值将对应于图像上的像素强度(虽然我只对此时的0,1值白色或黑色感兴趣.),而列和行编号对应于图像上的垂直和水平位置.
通过制作图像我的意思是在屏幕上显示它并将其保存为jpg.
我认为这个问题有一个简单的解决方案,几个for循环和一些花哨的计数器,但显然它更复杂.
所以我的问题是,你如何编写(在C中)对角线条中方形矩阵的函数遍历.
例:
1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)
必须按以下顺序遍历:
[1],[2,4],[3,5,7],[6,8],[9]
Run Code Online (Sandbox Code Playgroud)
上面的每个条带都用方括号括起来.其中一个要求是能够区分条带.这意味着你知道什么时候开始新的条带.这是因为我必须为条带中的每个项目调用另一个函数,然后在新条带的开头之前调用.因此,没有代码重复的解决方案是理想的.
假设我有一些矩阵,例如:
> m = matrix(rep(c(0, 0, 1), 4), nrow = 4)
> m
[,1] [,2] [,3]
[1,] 0 0 1
[2,] 0 1 0
[3,] 1 0 0
[4,] 0 0 1
Run Code Online (Sandbox Code Playgroud)
如果我跑which,我得到正常指数列表:
> which(m == 1)
[1] 3 6 9 12
Run Code Online (Sandbox Code Playgroud)
我希望得到像矩阵索引这样的东西 - 每个索引都包含行号和列号:
[,1] [,2]
[1,] 3 1
[2,] 2 2
[3,] 1 3
[4,] 4 3
Run Code Online (Sandbox Code Playgroud)
这有什么简单的功能吗?此外,它应该以某种方式包含行和列名称:
> rownames(m) = letters[1:4]
> colnames(m) = letters[5:7]
> m
e f g
a 0 0 1 …Run Code Online (Sandbox Code Playgroud)