快速合并很多小的matlab矩阵

时间:2018-04-04 00:04:18

标签: matlab performance matrix merge

我需要合并大约5000万个小型Matlab矩阵。使用如下的脚本似乎永远不会完成。有更快的方法吗?如果速度更快,我愿意尝试非Matlab路线。

// bq_results.js component where the FILTER_RESULTS is accessed
render() {
    console.log(this.props.filter_results); // only shows the first result
    return (<div>...</div>)
}


function mapStateToProps(state) {
    console.log(state.results.filter_results); // shows all selected cuts here
    return {
        filter_results: state.results.filter_results,
    }
}

1 个答案:

答案 0 :(得分:1)

这是一个完整的例子,显示&#34; parfor&#34;的使用。

disp('Using for-loop')
tmpData = zeros(100000,1);
tic
for i = 1:length(tmpData)
    tmpData(i) = max(max(eig(i*ones(100,100))));   % Some operation
end
toc

disp('Using parfor-loop')
tic
parfor (i = 1:length(tmpData))
    tmpData(i) = max(max(eig(i*ones(100,100))));   % Some operation
end
toc

上面的代码在我的机器上产生了以下时间。

Using for-loop
Elapsed time is 32.792182 seconds.
Using parfor-loop
Elapsed time is 7.673821 seconds.

但是,如果在for(或parfor)循环体内进行了一些简单的计算,那么&#34; for-loop&#34;运行速度超过&#34; parfor&#34;。例如,如果您将tmpData(i) = max(max(eig(i*ones(100,100))));替换为tmpData(i) = i;,那么您可以看到for循环执行得更好。