Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中矩阵逐元素乘法的替代方法_Matlab_Matrix_Vectorization_Bsxfun - Fatal编程技术网

matlab中矩阵逐元素乘法的替代方法

matlab中矩阵逐元素乘法的替代方法,matlab,matrix,vectorization,bsxfun,Matlab,Matrix,Vectorization,Bsxfun,我正在做一个大的矩阵乘法。我有一个大矩阵a(至少5000x5000)和一个列向量V(5000x1)。在我的代码中,每一个V都将一个元素的每一列乘以一个元素。我打了个圈 K = zeros(5000, 5000); for n=1:5000 K(:, n) = V.*A(:, n); end 但是它太慢了。所以我创建了一个大矩阵,每个列都被指定为V,这样 MV=repmat(V,1,5000); K = MV.*A; 它很快,但浪费了太多的内存。当矩阵的大小增加时,它会占用太多内存。使用更

我正在做一个大的矩阵乘法。我有一个大矩阵a(至少5000x5000)和一个列向量V(5000x1)。在我的代码中,每一个V都将一个元素的每一列乘以一个元素。我打了个圈

K = zeros(5000, 5000);
for n=1:5000
  K(:, n) = V.*A(:, n);
end
但是它太慢了。所以我创建了一个大矩阵,每个列都被指定为V,这样

MV=repmat(V,1,5000);
K = MV.*A;

它很快,但浪费了太多的内存。当矩阵的大小增加时,它会占用太多内存。使用更少的内存但速度更快有什么想法吗?

classic
bsxfun

K = bsxfun( @times, A, V );

或者,您可能需要查看(在FEX中找到)。

classic
bsxfun

K = bsxfun( @times, A, V );

或者,您可能需要查看(在FEX中找到)。

您是否预先分配了
K
使其具有正确的大小?您是否预先分配了
K
使其具有正确的大小?非常感谢您的输入。bsxfun似乎可以工作,但我需要稍后测试效率。至于MTIMESX,我读了自述文件,但它似乎只是矩阵乘法,而不是元素对元素的乘法。非常感谢您的输入。bsxfun似乎可以工作,但我需要稍后测试效率。至于MTIMESX,我阅读了自述文件,但似乎只是矩阵乘法,而不是元素对元素的乘法。