【问题标题】:Random number to be used as index in matlab在matlab中用作索引的随机数
【发布时间】:2013-09-25 10:29:24
【问题描述】:

我无法获得向量 packet_send 的整数索引。 (基本上我正在生成一个介于 1 到 100 之间的随机索引)。当我看到我用作索引的“长度”类时,它是双精度的,这意味着 rand 函数返回双精度值,所以我厌倦了通过将其类型转换为 int16 将其转换为整数。但是我仍然没有得到想要的长度,所以我可以将它用作向量的索引。

for time_slot = 1:1:number_of_slots    
       p = randint(1)*prob;
        lengths =int16( round(rand(1) * max_length)); % lengths value between 1 to 100.. as per the range decided
        if (p == prob)
            packet_send(lengths) = packet_send(lengths) + 1;
            total_number_of_packets = total_number_of_packets + 1 ;
        end
    end

【问题讨论】:

    标签: matlab random indexing numbers


    【解决方案1】:

    您可以使用randi 创建随机整数。对于您的代码示例,这可能是:

    lengths = randi(max_length, 1);
    

    您还可以在循环开始之前绘制所有随机索引:

    allLengths = randi(max_length, number_of_slots);
    

    ~编辑~
    如果 randi 在您的 matlab 版本中不可用,您可以使用:

    lengths = floor(rand(1)*max_length)+1;
    

    【讨论】:

    • 对于 double 类型的输入参数出现错误、未定义的函数或方法 'randi'。我正在使用长度 = randi(100,1)
    • 为什么要在函数中输入双精度值?我猜max_lengthnumber_of_slots 都是整数,对吧?
    • 我使用 matlab 7.6.0 (R200a) 在帮助中搜索 randi 时我什么也没找到 :(
    • 这似乎不是类型问题,而是lengths 的值是负数或零。确保lengths 大于零。对于您的具体问题,我猜变量 max_length 要么为零,要么为负。
    • 如果length 等于零,将得到您刚刚发布的错误消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多