标签: matrix

R:从x,y,z绘制3D表面

想象我有一个3列矩阵
x,y,z,其中z是x和y的函数.

我知道如何绘制这些点的"散点图" plot3d(x,y,z)

但是,如果我想要一个表面,我必须使用其他命令,如surface3d问题是它不接受与plot3d相同的输入它似乎需要一个矩阵与

(nº elements of z) = (n of elements of x) * (n of elements of x)
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到这个矩阵?我尝试使用命令interp,就像我需要使用等高线图时一样.

如何在不计算此矩阵的情况下直接从x,y,z绘制曲面?如果我的分数太多,那么这个矩阵就太大了.

干杯

3d plot r matrix rgl

31
推荐指数
4
解决办法
10万
查看次数

model.matrix生成的行数少于原始data.frame

为什么模型矩阵必须与数据帧具有相同的行数?

mergem = model.matrix(as.formula(paste(response, '~ .')), data=mergef)
dim(mergef)
# [1] 115562     71
dim(mergem)
# [1] 66786   973
Run Code Online (Sandbox Code Playgroud)

我试图在文档中寻找提示,但找不到任何东西.提前致谢.

model r matrix dataframe

31
推荐指数
1
解决办法
9223
查看次数

R将矩阵或数据帧转换为sparseMatrix

我有一个常规矩阵(非稀疏),我想转换为sparseMatrix(使用Matrix包).有没有这样做的功能,还是我需要做一堆循环?

恩.

> regMat <- matrix(0, nrow=10, ncol=10)
> regMat[3,5] <- round(runif(1),2)*100
> regMat[2,8] <- round(runif(1),2)*100
> regMat[8,4] <- round(runif(1),2)*100
> regMat[1,6] <- round(runif(1),2)*100
> regMat[7,4] <- round(runif(1),2)*100
> regMat 
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    0    0    0    0    0   49    0    0    0     0
 [2,]    0    0    0    0    0    0    0   93    0     0
 [3,]    0    0    0    0   20    0    0    0    0     0
 [4,]    0    0 …
Run Code Online (Sandbox Code Playgroud)

r matrix sparse-matrix

31
推荐指数
2
解决办法
3万
查看次数

30
推荐指数
3
解决办法
13万
查看次数

高效的4x4矩阵逆(仿射变换)

我希望有人可以指出4x4仿射矩阵变换的有效公式.目前我的代码使用辅助因子扩展,并为每个辅助因子分配一个临时数组.它很容易阅读,但它应该比它应该慢.

请注意,这不是作业,我知道如何使用4x4辅助因子扩展手动完成它,这只是一个痛苦,对我来说并不是一个真正有趣的问题.我也用谷歌搜索了一些网站,它们已经为你提供了公式(http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm).然而,通过预先计算一些产品,可能会进一步优化这一点.我敢肯定有人在某个时刻想出了"最好"的公式吗?

math matrix linear-algebra

30
推荐指数
4
解决办法
4万
查看次数

R中的矩阵功率

试图计算R中矩阵的幂,我发现包expm实现了运算符%^%.

所以x%^%k计算矩阵的k次方.

> A<-matrix(c(1,3,0,2,8,4,1,1,1),nrow=3)

> A %^% 5
      [,1]  [,2] [,3]
[1,]  6469 18038 2929
[2,] 21837 60902 9889
[3,] 10440 29116 4729
Run Code Online (Sandbox Code Playgroud)

但令我惊讶的是:

> A
     [,1] [,2] [,3]
[1,]  691 1926  312
[2,] 2331 6502 1056
[3,] 1116 3108  505
Run Code Online (Sandbox Code Playgroud)

不知何故,初始矩阵A已变为A%^%4 !!!

你如何执行矩阵功率操作?

r matrix linear-algebra

30
推荐指数
3
解决办法
3万
查看次数

在MATLAB中构造邻接矩阵

考虑在大小为N-by-M的网格上排列的一组点.我正在尝试构建邻接矩阵,以便连接相邻点.

例如,在带有图形的3x3网格中:

1-2-3
| | |
4-5-6
| | |
7-8-9
Run Code Online (Sandbox Code Playgroud)

我们应该有相应的邻接矩阵:

+---+------------------------------------------------------+
|   |   1     2     3     4     5     6     7     8     9  |
+---+------------------------------------------------------+
| 1 |   0     1     0     1     0     0     0     0     0  |
| 2 |   1     0     1     0     1     0     0     0     0  |
| 3 |   0     1     0     0     0     1     0     0     0  |
| 4 |   1     0     0     0     1     0     1     0     0  |
| 5 …
Run Code Online (Sandbox Code Playgroud)

matlab graph-theory matrix

30
推荐指数
2
解决办法
4万
查看次数

Android图像视图矩阵比例+翻译

我试图手动获取图像视图内部的图像并适合屏幕.我需要用矩阵来做(我稍后会动态地改变矩阵变换).

问题是我无法将图像置于视图中心(比例尺是合适的).这是代码:

// Compute the scale to choose (this works)
float scaleX = (float) displayWidth / (float) imageWidth;
float scaleY = (float) displayHeight / (float) imageHeight;
float minScale = Math.min(scaleX, scaleY);

// tx, ty should be the translation to take the image back to the screen center
float tx = Math.max(0, 
        0.5f * ((float) displayWidth - (minScale * imageWidth)));
float ty = Math.max(0, 
        0.5f * ((float) displayHeight - (minScale * imageHeight)));

// Compute the matrix
Matrix m = new Matrix(); …
Run Code Online (Sandbox Code Playgroud)

android transformation matrix imageview

30
推荐指数
2
解决办法
9万
查看次数

使用数组的矩阵乘法

我正在尝试使用多维数组([2][2])进行简单的矩阵乘法.我对此有点新意见,而我却无法找到它我做错了什么.我非常感谢能告诉我它是什么的任何帮助.我宁愿不使用库或类似的东西,我主要是这样做以了解它是如何工作的.非常感谢你提前.

我在主方法中声明我的arays如下:

Double[][] A={{4.00,3.00},{2.00,1.00}}; 
Double[][] B={{-0.500,1.500},{1.000,-2.0000}};
Run Code Online (Sandbox Code Playgroud)

A*B应该返回单位矩阵.它没有.

public static Double[][] multiplicar(Double[][] A, Double[][] B){
//the method runs and returns a matrix of the correct dimensions
//(I actually changed the .length function to a specific value to eliminate 
//it as a possible issue), but not the correct values

    Double[][] C= new Double[2][2];
    int i,j;

    ////I fill the matrix with zeroes, if I don't do this it gives me an error
    for(i=0;i<2;i++) {
        for(j=0;j<2;j++){
            C[i][j]=0.00000;
        }
    } 
    ///this is where …
Run Code Online (Sandbox Code Playgroud)

java arrays matrix multidimensional-array matrix-multiplication

30
推荐指数
3
解决办法
14万
查看次数

使用"const cv :: Mat&","cv :: Mat&","cv :: Mat"或"const cv :: Mat"作为函数参数的区别?

我彻底搜查过,并没有找到一个直截了当的答案.

将opencv matrices(cv::Mat)作为函数的参数传递,我们传递一个智能指针.我们对函数内部的输入矩阵所做的任何更改也会改变函数范围之外的矩阵.

我通过传递一个矩阵作为const引用来读取它,它不会在函数内被改变.但是一个简单的例子表明它确实:

void sillyFunc(const cv::Mat& Input, cv::Mat& Output){
    Output = Input;
    Output += 1;
}

int main( int argc, char** argv ){
    cv::Mat A = cv::Mat::ones(3,3,CV_8U);
    std::cout<<"A = \n"<<A<<"\n\n";
    cv::Mat B;
    sillyFunc(A,B);
    std::cout<<"A = \n"<<A<<"\n\n";
    std::cout<<"B = \n"<<B<<"\n\n";
}
Run Code Online (Sandbox Code Playgroud)

很明显,A即使它是作为一个发送,也会被改变const cv::Mat&.

这并不让我感到惊讶,因为在函数内部I2是一个简单I1的智能指针副本,因此任何改变I2都会改变I1.

什么是难不倒我的是,我不明白发送之间存在什么实际区别cv::Mat,const cv::Mat,const cv::Mat&cv::Mat&作为参数的函数.

我知道如何覆盖这个(替换Output = Input;Output = Input.clone();将解决问题)但仍然不明白上述差异.

多谢你们!

c++ parameters opencv function matrix

30
推荐指数
1
解决办法
2万
查看次数