概述
使用repmat是迄今为止预先分配结构的最有效的方法:
N = 10000; b = repmat(struct('x',1), N, 1 );
使用Matlab 2011a的速度比通过索引预分配快了10倍 ,如
N = 10000; b(N).x = 1
索引方法的速度只比没有预先分配更快。
No preallocation: 0.075524 Preallocate Using indexing: 0.063774 Preallocate with repmat: 0.005234
下面的代码以防万一你想validation。
clear; N = 10000; %1) GROWING A STRUCT tic; for ii=1:N a(ii).x(1)=1; end noPreAll = toc; %2)PREALLOCATING A STRUCT tic; b = repmat( struct( 'x', 1 ), N, 1 ); for ii=1:N b(ii).x(1)=1; end; repmatBased=toc; %3)Index to preallocate c(N).x = 1; for ii=1:N c(ii).x(1)=1; end; preIndex=toc; disp(['No preallocation: ' num2str(noPreAll)]) disp(['Preallocate Indexing: ' num2str(preIndex)]) disp(['Preallocate with repmat: ' num2str(repmatBased)]) No preallocation: 0.075524 Preallocate Indexing: 0.063774 Preallocate with repmat: 0.0052338 >>
PS我有兴趣知道为什么这是真实的,如果任何人可以解释它。
最后
以上就是老迟到果汁为你收集整理的matlab 数组构造,如何在MATLAB中初始化一个结构数组?的全部内容,希望文章能够帮你解决matlab 数组构造,如何在MATLAB中初始化一个结构数组?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复