首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >建立矩阵

建立矩阵
EN

Stack Overflow用户
提问于 2014-03-15 15:45:33
回答 2查看 71关注 0票数 1

我有一个函数,叫做foo,它向输入中添加了一个随机数。这个过程进行了两次,并收集为一个列表,即

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(defn foo [x] (vec (list (+ x (rand)) (+ x (rand)))))

在将和收集到索引结构a b之后,我想再次向每个元素添加一个随机数(更普遍地说,可以执行多个算术操作)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(map #(+ % (rand)) [a b])  

注意,元素a和b在这里是符号,在实际操作中是浮点数。

现在我到达了这篇文章的要点,我想重复上面的过程20次,并将迭代输出为20x2矩阵。这就是我被困在建筑里的地方。

此外,我希望从一开始就循环这个过程,以便将rand添加到我的输入x中,从而给出两个新的索引元素a‘b’。请记住,a‘和b’是浮点数的符号表示,素数用于区分元素和第一个循环。然后将这些索引元素反馈到映射中,再执行20次。

最后一步,我希望函数中有一个输入参数,以便能够控制为映射阶段创建的索引元素的数量(完成20次)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-15 19:36:25

我想重复上面的过程20次,并输出迭代。

那你就是在找iterate

我希望函数中有一个输入参数,以便能够控制创建的索引元素的数量。

那你就是在找repeat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(defn bar [init ncols nrows] 
  (take 
    nrows 
      (iterate
        (partial map + (repeatedly rand)) 
        (repeat ncols init))))

(->> (bar 0 2 20) (mapv vec))

=>; [[0 0]
  ;  [0.1600773061377655 0.25622198504430205]
  ; .
  ; . (20 rows in all) 
  ; .
  ;[3.0414688166175456 4.86821771584174]]
票数 2
EN

Stack Overflow用户

发布于 2014-03-15 19:44:30

我建议在这种数组/矩阵处理中使用core.matrix。这可能比从头开始手工编写所有数组操作例程容易得多。请参阅:https://github.com/mikera/core.matrix

有许多core.matrix函数可以用来实现您的需求:

  • emap -将函数应用于多维数组的每个元素。
  • slices -获取数组的切片序列
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22431201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文