Matlab在向量中插入值,该向量的索引包含在结构中,没有循环
我正在用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的函数
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)
,然后再次计时。