首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab优化查询,避免了爬虫

Matlab优化查询,避免了爬虫
EN

Stack Overflow用户
提问于 2014-10-23 09:51:49
回答 1查看 126关注 0票数 2

这是一个简单的问题,我看不出更好的答案,也许其他人可以!以下是代码:

示例变量

代码语言:javascript
复制
nSim = 3000;
nRow = 10000;
data = zeros(1, 5, nRow);
data (:, 1:4, :) = rand(4, nRow)*0.5; % 4 columns of duration values
data (:, 5, :) = 1000;   % 1 column of actual value
basis.increaseRate   = 1 + (rand(nSim, 4)*0.1);

算例计算

代码语言:javascript
复制
dataWithSim = repmat(data(:, 1:4,:),nSim, 1, 1);    
increaseFactors = bsxfun(@power, basis.increaseRate, dataWithSim);
Values = bsxfun(@times, data(:,5,:), prod(increaseFactors,2));

需要重新整理的感觉是错误的,但我想不出有什么办法可以避免它。

实际上,我正在增加^数据,而且我真的不想循环遍历这两个维度(simsdata行)。虚拟数据可以按我选择的任何方式排序,但是值输出必须是nSimnRow矩阵。

任何想法都欢迎。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-23 10:00:44

您真的不需要使用那个repmat。你可以像这样直接从data中输入“子矩阵”-

代码语言:javascript
复制
increaseFactors = bsxfun(@power, basis.increaseRate, data(:,1:4,:));

bsxfun内部负责singleton维度的扩展,在本例中,这是data的第一个维度(行)。因为basis.increaseRatenSim行,data(:,1,4,:)有一行,所以它将被展开为具有相同数目的行,即nSim,从而在内部完成爬虫/扩展的工作。

其余代码保持不变。

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

https://stackoverflow.com/questions/26525514

复制
相关文章

相似问题

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