我是靠谱客的博主 单身芝麻,最近开发中收集的这篇文章主要介绍matlab 数组构造,如何在MATLAB中初始化结构数组?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

到目前为止,使用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

下面的代码,以备您验证。

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

tic;

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

>>

附言 如果有人可以解释,我很想知道为什么会这样。

最后

以上就是单身芝麻为你收集整理的matlab 数组构造,如何在MATLAB中初始化结构数组?的全部内容,希望文章能够帮你解决matlab 数组构造,如何在MATLAB中初始化结构数组?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部