【发布时间】:2010-09-29 17:21:47
【问题描述】:
我正在为我的问题找到一个解决方案,但我感觉它不会很有效率。我有一个可变长度数组的二维单元结构,它在 Matlab 中以非常非功能性的方式构造,我想将其转换为 Clojure。这是我正在尝试做的一个示例:
pre = cell(N,1);
aux = cell(N,1);
for i=1:Ne
for j=1:D
for k=1:length(delays{i,j})
pre{post(i, delays{i, j}(k))}(end+1) = N*(delays{i, j}(k)-1)+i;
aux{post(i, delays{i, j}(k))}(end+1) = N*(D-1-j)+i; % takes into account delay
end;
end;
end;
我目前的实施计划是使用 3 个循环,其中第一个循环使用空向量的 N 个向量进行初始化。每个子循环由前一个循环初始化。我定义了一个单独的函数,它采用整体向量和子索引和值,并返回带有更新子向量的向量。
必须有一种比使用 3 次循环/递归更聪明的方法。可能是一些通过使用累加器来简化语法的 reduce 函数。
【问题讨论】: