Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我想问一个问题:我在mathematica中:
step := {{0, 1}, {1, 0}, {0, -1}, {-1, 0}} [[RandomInteger[ {1, 4}] ]] step --> this takes one list from above (for example {0,1}) steps2D[n_] := Table[step, {n}] 而我做到了: a=[0,1];b=[1,0];c=[0,-1];d=[-1,0]; list=[a;b;c;d] step=@ (rand) rand(1,list) -->> i must extract from here randomly one pair.. step steps2D=@ (n) arrayfun(step,n); 我有2个问题:1)我无法从列表中随机抽取一对。 2)我不知道我是否有正确的step2D。 编辑->>代码继续: Walk2D[n_] := FoldList[Plus, {0, 0}, steps2D[n]] Walk2D[10] LastPoint2D[n_] := Fold[Plus, {0, 0}, steps2D[n]] LastPoint2D[100] 我是这样做的: Walk2D=@ (list,n) cumsum(steps2D(list,n)); Walk2D(list,10) LastPoint2D = @ (Walk2D) (Walk2D(end)); walk1=Walk2D(list,100); LastPoint2D(walk1) -->> This gives me only one number and not a pair as it should 回答: 我想您想在Matlab中做第一个代码示例。为了从数组list获取随机元素,您可以执行以下操作: rand_row_index = ceil( length(list) * rand(1) ); step = list( rand_row_index, : ); 关于您的第二个问题,由于我对Mathematica不熟悉,因此我不确定您实际上想做什么。如果要构成一个由元素组成的矩阵(从list随机抽取),则可以编写如下函数 % Create a matrix with n rows that contains random values taken from list. function result = steps2D(list, n) result = zeros(n, size(list, 2)); for i = 1:n rand_row_index = ceil( length(list) * rand(1) ); step = list( rand_row_index, : ); result(i, :) = step; end end 并像这样使用它: steps = steps2D( list, 30 ); 注意,在Matlab中,必须在单独的文件中定义steps2D()函数, steps2D()将其命名为steps2D.m 。 更多&回答... |
![]() |
![]() |