我遇到了一个我无法理解的matlab代码。如果有人知道这个代码意味着什么,那么在这方面帮助我。
Lambda(:,1) = [randi([1,4], 1,4), randi([1,30],1)*rand];
我知道randi
将在[min,max]之间返回随机整数。我想知道什么是lambda会得到什么? 行值,列值或仅标量值?
答案 0 :(得分:1)
嗯..你可以运行代码,看看会发生什么:
[randi([1,4], 1,4), randi([1,30],1)*rand]
ans =
4.0000 2.0000 4.0000 1.0000 11.9046
所以答案是:一个包含5个条目的行向量。
但让我们更详细一点:使用randi([1,4], 1,4)
创建一个大小为1 x 4
的行向量,其中包含[min,max]
之间的随机整数,即{{1}之间的随机整数}和1
。第二部分类似地在4
范围内创建一个整数,并将其乘以区间[1,30]
中的随机数。
使用(0,1)
连接两个数字或向量。这导致了一个大小为[x,y]
的行向量,正如我们在开头看到的那样。
最后,您将其分配给1 x 5
。与在MATLAB中一样,第一个索引用于行,第二个索引用于列,您选择Lambda(:,1)
的第一列。因此,您尝试将Lambda
行向量分配给1 x 5
列向量。幸运的是,MATLAB非常聪明,可以解决这个问题,所以这个片段无论如何都会有效。如果您首先创建了一个列向量而不是行向量,那将是一个更好,更清晰的解决方案。那将是
5 x 1