我正在尝试更高效地在python中填充数组。我有一个5x3矩阵A,我正在通过独立计算z11,z12,...,z33将其转换为3x3矩阵(Z)。下面的代码可以工作,但它很笨拙,我希望将其自动化到一个循环中,以便它可以接受任意大小的A矩阵(n X m),并将其转换为大小为(m X m)的Z矩阵。如果有人能帮助我,我将不胜感激! import numpy as np
A = np.array([[1,0,0],
[0,1,0],
[0,1,1],
[0,0,-1],
[0,0,1]])
A1=A[:,0]
A2=A[:,1]
A3=A[:,2]
C = np.array([-
我尝试将这些1维矩阵(或向量)彼此相乘,如下所示: a = np.array([1,2,3]).reshape(1,3)
b = np.array([4,5,6]).reshape(1,3)
c = np.dot(a,b) print(c)输出的错误为'shapes (1,3) and (1,3) not aligned‘,根据矩阵乘法法则是正确的。 但是当我做c = a*b和print(c)时,我得到了一个1 x 3的矩阵- array([[ 4, 10, 18]])。 我的问题是,1X3*1X3矩阵乘法是如何产生1X3矩阵的?第一个矩阵的列应该等于第二个矩阵的行。难到不是么?
我正在尝试用Java逆时针旋转一个矩阵90度。我找到了如何使用2D矩阵的答案,但我的矩阵是3D的。
这是我是如何发现如何做2D旋转的:
static int[][] rotateCW(int[][] mat) {
final int M = mat.length;
final int N = mat[0].length;
int[][] ret = new int[N][M];
for (int r = 0; r < M; r++) {
for (int c = 0; c < N; c++) {
ret[c][
我必须通过M = M + c*a*a'进行大量的矩阵更新,其中c是常数,a是列向量。如果矩阵的大小大于1000,这种简单的更新将花费我函数的大部分时间,通常超过profile计算的1分钟。
主要守则如下:
for i = 1:N
_do something..._
for k = 1:n
a(1:k) = M(1:k,1:k)*p(1:k);
M(1:k,1:k) = M(1:k,1:k)+c*a(1:k)*a(1:k)';
M(1:k, k+1) = b(1:k);
M(k+1, 1:k) = b
我正在用C#和XNA4.0制作一个游戏。在某些级别,我需要一个相机矩阵,使水平看起来像滚动左/右。此外,当设置用于更改窗口大小时,我还需要一个缩放矩阵来缩放图形。我的两个矩阵都是函数的,但我目前正在用如下方式调用它们:
if (scrollingLevel)
{
//Use the camera matrix to make the stage scroll
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, camera.transform);
}
如何找到X,Y,X‘和Y',其中这些是未知的 2x2矩阵,而A,B,C,I,J,K和L是已知的 2x2矩阵。
方程式是:
A . X . Y . B = I
A . X . Y' . B = J
A . X . Y . C . X' . Y' . B = K
A . X' . Y' . B = L
通过在A和B之间保持2个未知数,可以生成简化问题的方程。
看起来很现实,因为问题包含4个方程和4个未知数。
有人能帮忙吗?谢谢
我需要在Scilab中创建一个块三对角矩阵。更明确地说,我想设置一个M^2 X M^2矩阵,格式如下:
B C 0 ... 0 0
D B C 0 ... 0
0 D B C ... 0
0 ... ... ... ...
0 0 ... D B C
0 0 0 ... D B
其中B、C和D是M×M矩阵。
我知道如何在"sysdiag“函数的帮助下创建块对角矩阵,但我还没有找到任何参考资料来轻松创建块三对角矩阵。
顺便说一下,给定矩阵B,C和D,我知道如何创建上面的矩阵。
auxA = sysdiag(B,B
给定一个向量和矩阵A和B,如何将A的每个元素作为标量乘以B,然后将每个新矩阵相加,而不使用for循环。
我的意思是:
A = [1;2;3]
B = [1 2;3 4 ;5 6]
C = (A(1) * B) + (A(2) * B) + (A(3) * B)
ans =
6 12
18 24
30 36
C = sum(C)
C =
54 72
但我不能手动完成,因为向量太长了。
在一个方法中,我有一个m*n矩阵和一个数组(分配为m*1矩阵),不幸的是,在编译过程中我得到了以下错误:
main.c:337:30: error: invalid operands to binary * (have ‘float’ and ‘float *’)
yp += matrixA[i][j] * listB[j];
该方法的完整代码如下
float error(float **matrixA, float **listB, int m, int n) {
int i, j;
float err = 0, de, yp;
f
在R中,我可以在矩阵和(共形)向量之间进行分段乘法,例如:
X <- matrix(c(1, 2, 3, 4), nrow = 2)
a <- c(0, 1)
X * a
然后将矩阵的每一行与相应的向量元素相乘。我也可以对维数大于2的数组执行相同的操作:
XX <- array(X, dim = c(2, 2, 2))
a <- c(0, 1)
XX * a
同样,每一行都与相应的向量元素相乘。我能对3d数组和2d矩阵做类似的事情吗?我只想让数组的每个子矩阵逐个元素地与一个矩阵相乘。