【发布时间】:2014-12-09 17:30:00
【问题描述】:
我正在为我的一项 matlab 作业而苦苦挣扎。我想创建 10 个不同的模型。它们中的每一个都基于相同的原始数组,尺寸为 1x100 m_est。然后使用 for 循环,我从原始模型中选择 5 个随机值,并希望向它们中的每一个添加相同的随机值。循环重复 10 次,每次选择不同的值并添加不同的随机数。这是我的代码的一部分:
steps=10;
for s=1:steps
for i=1:1:5
rl(s,i)=m_est(randi(numel(m_est)));
rl_nr(s,i)=find(rl(s,i)==m_est);
a=-1;
b=1;
r(s)=(b-a)*rand(1,1)+a;
end
pert_layers(s,:)=rl(s,:)+r(s);
M=repmat(m_est',s,1);
end
for k=steps
for m=1:1:5
M_pert=M;
M_pert(1:k,rl_nr(k,1:m))=pert_layers(1:k,1:m);
end
end
在矩阵 M 中,我存储了 10 个初始模型,并希望用 rl_nr 矩阵中的索引替换随机数到存储在 pert_layers 矩阵中的那些。但是,负责将值从 pert_layers 分配给 rl_nr 索引的最后一个循环无法正常工作。
有人知道怎么解决吗?
最好的问候
【问题讨论】:
-
嗯,最后一个循环导致了问题。我无法弄清楚如何正确编写这一行: M_pert(1:k,rl_nr(k,1:m))=pert_layers(1:k,1:m);因为 matlab 似乎要么仅从 rl_nr 的第一个数组更改索引,要么随机选择它们。我希望程序将 pert_layers 中的值分配给 rl_nr 索引并将其放入 M_pert 矩阵。我希望这能清楚地解释我的意图。
-
小注。在您的最后一个
for循环中,M_pert不断重新初始化,因此它只会记住在该循环的最后一次迭代中所做的更改。但是,我正在写一个更加矢量化的答案,敬请期待。
标签: matlab