【问题标题】:How to add number at the end of rand [duplicate]如何在rand末尾添加数字[重复]
【发布时间】:2016-08-14 12:01:22
【问题描述】:

您好,我必须生成 5 行随机数,在随机数的末尾我必须添加一个额外的负数(从(-1 到 -9))我尝试了 strcat 和类似的东西,但我无法组合负数和实数你能帮帮我吗?下面的代码将创建我需要的一切,但我必须以某种方式组合它们。结果必须是例如

1 2 3 4 5 -1
5 8 3 5 9 -2
.
.
.
9 2 4 8 6 -9

for b = 1:9    
    x = round(rand(1,5)*9);
    disp(x)
end
for a = -1:-1:-9


    disp (a);
end

【问题讨论】:

  • 为什么要在数字上使用strcat,一个连接字符串的函数?使用cat。此外,负数是实数...

标签: matlab


【解决方案1】:
[round(rand(9,5) * 9), -(1:9)']

【讨论】:

    【解决方案2】:

    我首先阅读了您的代码,您的第一批随机数的范围从 0 到 9,它们必须是整数,而您的第二批(最后一列)的范围从 -1 到 -9,它们也是整数。如果是这样,试试这个

    A = [round(rand(5,5)*9),round(-1+rand(5,1)*-8)];
    disp (A)
    

    在表达式中:

    round(rand(5,5)*9) 生成 0 到 9 之间的 5×5 随机数矩阵。

    一般情况下,如果您希望在 a 和 b 之间生成 n×m 随机整数矩阵,请使用以下表达式:

    round(a+rand(n,m)*(b-a))
    

    希望对你有帮助。

    杰克逊

    【讨论】:

    • 我必须分开做,然后在最后加上负数。负数也不能是随机的。它必须按照从-1到-9的顺序。然后我必须写入我的串口。这就是我有 for 循环的原因,因为如果我必须写入超过 9 次的数据,负数应该再次从 -1 变为 -9
    • 在这种情况下,Dan 的方法应该有效。或将我的代码更改为以下内容:A = [round(rand(9,5)*9),transpose(-1:-1:-9)]; disp (A)
    • 试过了,但它告诉我错误连接矩阵的维度不一致。
    • 我的程序中有for循环的原因是我必须将每行单独发送到串口。在我的情况下(对于 b = 1:9)我将发送到串行端口的 9 行,所以我必须在那里添加 fwrite(serialobjet,以及带有负数的数据)。当设备在串口末端时,需要多于 9 条线。负数应重复。 12345 -1 45871 -2。 . . 65748 -9 56874 -1 32164 -2 等
    【解决方案3】:
    r = randi(9,9,5);
    n = (-1:-1:-9)';
    
    a = [r,n]
    

    【讨论】:

    • 它告诉我错误被连接的矩阵的维度不一致。
    • @Franta123456 立即尝试
    • 好的,现在可以了。这里是如何分隔每条线的某种方式。因为我必须将每一行发送到串口。这就是我尝试使用函数的原因。并且当我需要进入串行端口 10 线时。负数不得不从乞讨重新开始。例如 4 4 5 7 6 -1 。 . . 5 7 3 6 6 -9 9 1 3 5 3 -1 等
    • @Franta123456 这听起来像是一个完全不同的问题。我建议您将其作为一个新问题提出。也不要说行,这是模棱两可的。在这种情况下,而是指行或列。
    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多