Matlab在向量中插入值,该向量的索引包含在结构中,没有循环

Matlab在向量中插入值,该向量的索引包含在结构中,没有循环,matlab,indexing,structure,Matlab,Indexing,Structure,我正在用Matlab进行分段分类。我得到向量中的类,我想把这些类放在原始索引中。这些索引在一个结构中 我希望这样做没有循环 索引位于嵌套结构中,如 d.S(1) = ids: [845x1 double] 实现我想要的功能的循环是: for i=1:1:N imC([d.S(i).ids]) = class(i) end 您使用的是函数class(),还是其他意思?还有,循环有什么问题?不,实际上,我用大写的CLASS。这个循环真的没有效率,我认为使用类似arrayfun的函数

我正在用Matlab进行分段分类。我得到向量中的类,我想把这些类放在原始索引中。这些索引在一个结构中

我希望这样做没有循环

索引位于嵌套结构中,如

d.S(1) = 
   ids: [845x1 double]
实现我想要的功能的循环是:

for i=1:1:N
   imC([d.S(i).ids]) = class(i)
end

您使用的是函数
class()
,还是其他意思?还有,循环有什么问题?不,实际上,我用大写的CLASS。这个循环真的没有效率,我认为使用类似arrayfun的函数会更好。我假设
CLASS()
是一个用户定义的函数。请将
tmp=CLASS(i)
的输出分配到循环内部之前的一行,然后
imC(d.S(i).ids)=tmp(请注意,
[]
不是必需的)。运行分析器,检查两行之间占用大部分时间的内容,并将结果发布在此处。抱歉,我意识到我没有回答您的问题<代码>类
是一个向量,
[CLASS,ERR,POSTERIOR,LOGP,COEF]=分类(样本,训练,组,,'diaglinear')的输出之一它是在之前运行的。由于我对分析器没有信心,我使用了tic和tac<代码>经过的时间为0.000000秒。运行时间为0.000009秒。
您可以对循环进行矢量化,但这意味着创建一个额外的矢量,该矢量的总长度与所有ID的长度相同。在这样做之前,按原样对整个循环计时,然后尝试将所有
id
存储在一个单元格数组中,以便循环
imC(ids{i})=CLASS(i)
,然后再次计时。