我试图执行此代码500次,并将其保存为一个数组,x。
u=rand();
m=1;
while(u>=cum_prob(m))%
m=m+1;
end
x=(bin_edges(m-1)-bin_edges(m-2))/(cum_prob(m-1)-cum_prob(m-2))*(u-((((bin_edges(m-1)*cum_prob(m-2))-((bin_edges(m-2)*cum_prob(m-1))))/(bin_edges(m-1)-bin_edges(m-2)))));当我运行它的时候。现在我需要这样做500次,并将结果存储在一个数组x中。我编写的代码如下所示,但是我得到的错误是“array索引必须是正整数或逻辑值”。在以x(A)=.开头的线上。
x=zeros(1,500);
for a=1:500
u=rand();
m=1;
while(u>=cum_prob(m))%
m=m+1;
end
x(a)=(bin_edges(m-1)-bin_edges(m-2))/(cum_prob(m-1)-cum_prob(m-2))*(u-((((bin_edges(m-1)*cum_prob(m-2))-((bin_edges(m-2)*cum_prob(m-1))))/(bin_edges(m-1)-bin_edges(m-2)))));
end如果有人能给我指明正确的方向,那就太好了!谢谢你
发布于 2019-08-26 06:46:31
当u<cum_prob(m)和m = 1。在x(a)行中有bin_edges(m-1)、bin_edges(m-2)、cum_prob(m-2)和cum_prob(m-2)。我不知道bin_edges是什么,但我假设至少cum_prob是一个向量,因此m-2会导致一个错误。
https://stackoverflow.com/questions/57652790
复制相似问题