首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Matlab相当于Numpy广播?

Matlab相当于Numpy广播?
EN

Stack Overflow用户
提问于 2010-07-09 21:49:15
回答 3查看 12.3K关注 0票数 23

我正在尝试在Matlab中从一个3*(一个大数字)矩阵的每一列中减去一个大小为3的向量。当然,我可以使用循环,但我正在尝试寻找更有效的解决方案,有点像numpy广播。哦,我不能使用repmat,因为我没有足够的内存来使用它(因为它又创建了一个3*(一个大数字)矩阵)……

这个是可能的吗?

EN

回答 3

Stack Overflow用户

发布于 2016-10-18 17:44:41

其他答案有点过时了-- Matlab R2016b似乎有added broadcasting as a standard feature。这篇博客文章中的一个例子与这个问题相匹配:

代码语言:javascript
复制
>> A = ones(2) + [1 5]'
A =
     2     2
     6     6
票数 18
EN

Stack Overflow用户

发布于 2010-07-13 01:16:05

我不知道这是否会加快代码的速度,但是从向量中减去标量不会有内存问题。由于您的矩阵大小是不对称的,所以在短维上执行for循环的开销可以忽略不计。

所以也许

代码语言:javascript
复制
matout = matin;
for j = 1:size(matin, 1) %3 in this case
     matout(j,:) = matin(j,:) - vec_to_subtract(j);
end

当然,您可以就地执行此操作,但我不知道您是否希望保留原始矩阵。

票数 4
EN

Stack Overflow用户

发布于 2010-07-19 21:24:59

实际上,http://www.frontiernet.net/~dmschwarz/genops.html (操作符重载mex文件)似乎也做到了这一点,尽管我还没有测试过它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3213212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档