gpt4 book ai didi

arrays - 结构 : Fast assignment 的 Matlab 数组

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:24 25 4
gpt4 key购买 nike

有什么方法可以“向量”分配结构数组。

目前可以

edges(1000000) = struct('weight',1.0); //This really does not assign the value, I checked on 2009A.
for i=1:1000000; edges(i).weight=1.0; end;

但是那很慢,我想做点更像的事

edges(:).weight=[rand(1000000,1)]; //with or without the square brackets. 

任何将此分配向量化的想法/建议,以便它会更快。

提前致谢。

最佳答案

这比处理或循环快得多(至少在我的系统上):

N=10000;
edge(N) = struct('weight',1.0); % initialize the array
values = rand(1,N); % set the values as a vector

W = mat2cell(values, 1,ones(1,N)); % convert values to a cell
[edge(:).weight] = W{:};

在右侧使用大括号给出 W 中所有值的逗号分隔值列表(即 N 个输出),在右侧使用方括号将这 N 个输出分配给 edge(:).weight 中的 N 个值。

关于arrays - 结构 : Fast assignment 的 Matlab 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com