标签: matrix-multiplication

使用 Common Lisp 中的 BLAS 进行矩阵乘法

假设我有两个矩阵(以 Common Lisp 数组的形式) foo 和 bar ,这样:

(defvar foo #2A((2 1 6) (7 3 4)))
(defvar bar #2A((3 1) (6 5) (2 3)))
Run Code Online (Sandbox Code Playgroud)

我想使用 BLAS 执行矩阵乘法,而不使用 Matlisp、GSLL、LLA 等包装器。这样我就得到一个包含结果的数组:

#2A((24 25) (47 34))
Run Code Online (Sandbox Code Playgroud)

我应该采取哪些步骤来执行此类操作?

我的理解是,我应该从 REPL 调用 BLAS 矩阵乘法函数,并将我的参数 foo 和 bar 传递给它。

在 R 中,我可以轻松地这样做:

foo %*% bar
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 Common Lisp 中做到这一点?

免责声明:1)我使用 SBCL 2)我不是经验丰富的计算机科学家

sbcl common-lisp blas matrix-multiplication

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

如何在 Eigen 中展开矩阵?

假设我有一个矩阵Eigen::Matrix<double, 3, 3>,其条目是

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

我怎样才能将其扩展为

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

我需要它来将 3D 仿射/投影变换(4 x 4,在 Eigen::Transform 类型下)与 3D 旋转矩阵(3 x 3)相乘。

matrix matrix-multiplication eigen

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

python中的多维矩阵乘法

我有维度为 的矩阵 A500x2000x30和维度为 的矩阵 B 30x5

您可以认为有 500 个实例,因为2000x30矩阵 A 的维度为500x2000x30

我想将1x2000x30A 中的每个与矩阵 B 相乘以获得大小为 的新矩阵1x2000x5

A X B应该给我一个维度矩阵500x2000x5

显然,通过矩阵 A 循环 500 次是一个解决方案,但是有没有有效的方法来实现这一点?

编辑:A和B都是numpy数组

python numpy matrix-multiplication

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

numpy 矩阵乘法 nxm * mxp = nxp

我正在尝试将两个 numpy 数组作为矩阵相乘。我期望 ifA是一个n x m矩阵并且B是一个m x p矩阵,那么A*B会产生一个n x p矩阵。

此代码创建一个 5x3 矩阵和一个 3x1 矩阵,如shape属性所验证。我小心翼翼地创建了两个二维数组。最后一行执行乘法,我期望一个 5x1 矩阵。

A = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5]])
print(A)
print(A.shape)
B = np.array([[2],[3],[4]])
print(B)
print(B.shape)
print(A*B)
Run Code Online (Sandbox Code Playgroud)

结果

[[1 1 1]
 [2 2 2]
 [3 3 3]
 [4 4 4]
 [5 5 5]]
(5, 3)
[[2]
 [3]
 [4]]
(3, 1)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-38-653ff6c66fb7> in <module>()
      5 print(B)
      6 print(B.shape)
----> …
Run Code Online (Sandbox Code Playgroud)

python numpy matrix linear-algebra matrix-multiplication

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

加速 R 中的稀疏矩阵乘法

我正在尝试使用 R 中的 %*% 函数将矩阵(由少数 1 和大部分 O 组成)与向量相乘,此过程需要大量时间。有什么办法可以让它更快吗?

谢谢

r sparse-matrix matrix-multiplication

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

如何在Python中一次性乘以多个矩阵?

假设我有四个矩阵,abcd

在Python(使用numpy)中,我需要将result = np.matmul(np.matmul(np.matmul(a,b),c),d)它们相乘。

在 MATLAB/GNU Octave 中,我可以用更简单的方式将它们相乘result = a*b*c*d

有没有什么方法可以在Python中进行矩阵相乘,这样我就不必重复编写np.matmul避免嵌套括号?

python numpy matrix-multiplication

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

在C中使用多线程进行矩阵乘法

因此,我试图编写一个程序来使用多个线程进行矩阵乘法,然后绘制所用时间和所用线程数之间的图表。我使用了以下方法:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
pthread_mutex_t lock;

#define M 200
#define N 300
#define P 400
#define X 2 // Number of Threads
#define RED "\x1b[31m"
#define GREEN "\x1b[32m"

int A[M][N], B[N][P], C[M][P], D[M][P];

int row = 0;

void *matrixMulti(void *arg)
{
    pthread_mutex_lock(&lock);
    int i = row++;

    for (int j = 0; j < P; j++)
    {
        C[i][j] = 0;
        for (int k = 0; k < N; k++)
        {
            C[i][j] += …
Run Code Online (Sandbox Code Playgroud)

c multithreading pthreads matrix matrix-multiplication

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

Open Modelica 中的矩阵乘法

我做了一个简单的模型,但似乎不起作用。我收到此错误:“太多方程,超定系统。该模型有 6 个方程和 2 个变量”并且sum_vs = sum_vs + v[1] * A[1,1] 的大小为 1 但0 个变量 ()

我整个早上都在盯着这段代码,这是一个简单的例子,因为我想让它在未来变得更复杂(更大的维度)。这是代码:

model MatrixMultiplication
parameter Real A[2,2]=[1,2;1,2];
parameter Real v[2]={1,2};
parameter Real sum_vs=0; //counter
Real vs[2];
equation
for i in 1:2 loop
  for j in 1:2 loop
     sum_vs = sum_vs + v[j] * A[i,j];
  end for;
  vs[i]=sum_vs;
end for;
end MatrixMultiplication;
Run Code Online (Sandbox Code Playgroud)

理想的结果是vs[1,2]=A[2,2]*v[2];

谢谢!

matrix matrix-multiplication modelica openmodelica

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

python中的矩阵乘法有什么问题

在下面的代码(Jupiter笔记本)中,输出给出了错误,如何纠正代码?

import numpy as np

A = [1,22,231,1540]

B = [[-1,1,0],[1,-1,1],[0,6,0],[0,6,0]]

C = [[113401201],[10649],[1]]

result = np.dot(np.dot(A, B),C)

print(result)
Run Code Online (Sandbox Code Playgroud)

输出

 [-1800609408]
Run Code Online (Sandbox Code Playgroud)

实际答案是

在此输入图像描述

我想找到错误并改正

python numpy matrix-multiplication

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

通过向量元素乘以矩阵

假设我有一个矩阵A = rand(2,14,24)和一个向量x = 10*1(1,14)

我想要A和x的元素乘法,使得对于所有j = 1,2,...,B(i,j,k)= A(i,j,k)*x(j).我希望能够在不运行循环的情况下完成此操作.在matlab中执行此操作的最有效方法是什么?

matlab matrix-multiplication elementwise-operations

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