首页 > 解决方案 > 尝试在 for 循环中多次重复脚本时出错

问题描述

我正在尝试执行此代码 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 中。我为此编写的代码如下所示,但是我收到错误“数组索引必须是正整数或逻辑值”。在以 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

如果有人能指出我正确的方向,那就太好了!谢谢

标签: matlabfor-loop

解决方案


那时。u<cum_prob(m)_ m = 1x(a)你有bin_edges(m-1),和的行bin_edges(m-2)中。我不知道是什么,但我假设至少是一个向量,因此会导致错误。cum_prob(m-2)cum_prob(m-2)bin_edgescum_probm-2


推荐阅读