标签: vectorization

如何根据另一个矩阵的值在矩阵中设置索引值

说我有一个矩阵 A

A =
 0     1     2
 2     1     1
 3     1     2
Run Code Online (Sandbox Code Playgroud)

和另一个矩阵 B

B =
 0    42
 1    24
 2    32
 3    12
Run Code Online (Sandbox Code Playgroud)

我想将每个值替换A为与之关联的值B.

我会得到的

A =
 42     24     32
 32     24     24
 12     24     32
Run Code Online (Sandbox Code Playgroud)

如果没有循环我怎么能这样做?

matlab matrix vectorization

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

使用特定偏移向左和向右扩展列向量以形成2D矩阵 - MATLAB

我有一些随机长度的矢量,如,

a = [ 20
      78
      90
      180];

b = [ 54
      102
      1020];
Run Code Online (Sandbox Code Playgroud)

如何n = 3在每个元素之前和之后生成像整数一样的度量,如,

a1 = [17  18  19  20  21  22  23          b1 = [51   52   53   54   55   56   57
      75  76  77  78  79  80  81                99   100  101  102  103  104  105
      87  88  89  90  91  92  93                1017 1018 1019 1020 1021 1022 1023];
      177 178 179 180 181 182 183];
Run Code Online (Sandbox Code Playgroud)

没有任何循环,提前谢谢,

matlab vector vectorization

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

如何矢量化从矢量中找出最近的点

BigList = rand(20, 3)
LittleList = rand(5, 3)
Run Code Online (Sandbox Code Playgroud)

我想为大列表中的每一行找到小列表中的"最近"行,由欧几里德范数定义(即k = 3维度中相应值之间的平方距离之和).

我可以看到如何使用两个循环来做到这一点,但似乎应该有一个更好的方法来使用内置矩阵操作来做到这一点.

matlab vectorization euclidean-distance

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

MATLAB如何摆脱减去两个数组的循环

我试图在不同大小的MATLAB中减去两个数组,我目前正在使用for循环,这需要很长的时间.有没有办法让下面的代码更快?我想知道是否可以以某种方式在没有for循环的情况下快速创建一个117x489x489的数组.

第一个数组a的尺寸为1x117,第二个数组b的尺寸为489x489.结果矩阵的尺寸为117x489x489.

这是我如何减去两个数组:

for i = 1:length(a)
  result(i) = a(i) - b;
end
Run Code Online (Sandbox Code Playgroud)

arrays algorithm matlab vector vectorization

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

外部产品的总和乘以MATLAB中的标量

我想在此后对产品的总和进行矢量化,以加快我的Matlab代码.可能吗?

for i=1:N
    A=A+hazard(i)*Z(i,:)'*Z(i,:);
end
Run Code Online (Sandbox Code Playgroud)

其中hazard是向量(N x 1)并且Z是矩阵(N xp).

谢谢!

performance matlab product vectorization outer-join

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

当条件为2时,有效地更新numpy数组

假设您有一个包含3或4个元素的numpy数组

例如:

3
4
4
4
3
3
3
Run Code Online (Sandbox Code Playgroud)

我想改变这个数组,这样如果一个元素是3,那么它应该变成一个数字X,如果元素是4,它应该变成一个数字Y.保证X不同于Y.对于上面的数组我们会得到:

X
Y
Y
Y
X
X
X
Run Code Online (Sandbox Code Playgroud)

我在考虑做这样的事情:

arr[arr==3]=X
arr[arr==4]=Y
Run Code Online (Sandbox Code Playgroud)

但是,如果X是4呢?然后最后整个数组将只包含Ys.

我试图避免出于性能原因使用for循环,但如果这是唯一的方法,我可以负担得起遵循该路线.

python performance numpy vectorization

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

没有循环或矩阵的乘法

我有两个大小的矢量nm

a = [a1 a2 ... an];
b = [b1 b2 ... bm];
Run Code Online (Sandbox Code Playgroud)

我想"乘以"它们来获得结果:

c =
     a1*b1 a1*b2 ... a1*bm
     a2*b1 a2*b2 ... a2*bm
     .     .         .
     .     .         . 
     an*b1 an*b2 ... an*bm
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来获得这样的结果而不诉诸于循环或矩阵?

arrays matlab vector vectorization matrix-multiplication

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

使用SIMD/SSE进行水平运行差异和条件更新?

我想矢量化以下操作:

V[i+1] = max(V[i] - c, V[i+1]) for i=1 to n-1 (V[0] = 0)
Run Code Online (Sandbox Code Playgroud)

相应的天真伪代码是:

for (i=0; i < n; i++) {
  if (V[i]-c > V[i+1]) V[i+1] = V[i]-c
}
Run Code Online (Sandbox Code Playgroud)

哪些SIMD说明有用?

c c++ sse simd vectorization

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

在CUDA中使用half2

我试图使用half2,但我遇到了一个错误,即

error: class "__half2" has no member "y"
Run Code Online (Sandbox Code Playgroud)

发生错误的代码部分如下:

uint8_t V_ [128];       // some elements (uint8), to save space
float   V_C[128];       // storing the diff to use later
half2 *C_ = C.elements; // D halfs stored as half2, to be read
Cvalue = 0.0;
for (d = 0; d < D; d+=2)
{
  V_C [d  ] = V_[d]   - __half2float(C_[d/2].x)    ;
  V_C [d+1] = V_[d+1] - __half2float(C_[d/2].y)    ;
  Cvalue   += V_C [d]   * V_C [d]  ;
  Cvalue   += V_C [d+1] …
Run Code Online (Sandbox Code Playgroud)

precision cuda vectorization

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

识别一行中不同元素数量的有效方法

library(dplyr)
Run Code Online (Sandbox Code Playgroud)

我有以下数据集

set.seed(123)
n <- 1e6
d <- data.frame(a = letters[sample(5, n, replace = TRUE)], b = letters[sample(5, n, replace = TRUE)], c = letters[sample(5, n, replace = TRUE)],  d = letters[sample(5, n, replace = TRUE)]) 
Run Code Online (Sandbox Code Playgroud)

我想计算每一行中不同字母的数量.为此,我使用

sapply(as.data.frame(t(d)), function(x) n_distinct(x))
Run Code Online (Sandbox Code Playgroud)

但是因为这种方法实现了一个循环,所以它很慢.你对如何提高速度有什么建议吗?

我的笔记本电脑是一块垃圾,所以......

system.time(sapply(as.data.frame(t(d)), function(x) n_distinct(x)))
  user  system elapsed 
185.78    0.86  208.08 
Run Code Online (Sandbox Code Playgroud)

performance loops r vectorization

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