令人尴尬的是,我在设计这个宏时遇到了一些麻烦.
这是我编写的宏:
(defmacro construct-vertices
[xs ys]
(cons 'draw-line-strip
(map #(list vertex %1 %2) xs ys)))
Run Code Online (Sandbox Code Playgroud)
它需要接收两个集合或seqs,xs并且ys,我需要它给我...
(draw-line-strip (vertex 0 1) (vertex 1 1)
(vertex 3 3) (vertex 5 6)
(vertex 7 8))
Run Code Online (Sandbox Code Playgroud)
... for xs= [0 1 3 5 7]和ys= [1 1 3 6 8].
如果我给我的微距平原"N"简单的载体(如这只是正常[1 2 3 4]和[2 3 4 5]),但如果我给它一个懒惰-SEQ /任何需要像被评估不工作(take 16 (iterate #(+ 0.1 %1) 0))和(take 16 (cycle [0 -0.1 0 …
我正在编写一些信号处理软件,我开始编写一个离散卷积函数.
这适用于前一万个左右的值列表,但随着它们变大(例如,100k),我开始得到StackOverflow错误,当然.
不幸的是,我在将命令式卷积算法转换为递归和懒惰版本时遇到了很多麻烦,实际上使用速度足够快(至少有一点优雅也很好).
我也不是100%确定我完全没有这个功能,但是 - 如果我错过了什么/做错了什么,请告诉我.我认为这是正确的.
(defn convolve
"
Convolves xs with is.
This is a discrete convolution.
'xs :: list of numbers
'is :: list of numbers
"
[xs is]
(loop [xs xs finalacc () acc ()]
(if (empty? xs)
(concat finalacc acc)
(recur (rest xs)
(if (empty? acc)
()
(concat finalacc [(first acc)]))
(if (empty? acc)
(map #(* (first xs) %) is)
(vec-add
(map #(* (first xs) %) is)
(rest …Run Code Online (Sandbox Code Playgroud) functional-programming signal-processing clojure convolution
我有一个IEnumerable,我希望得到一个包含每个第n个元素的新IEnumerable.
这可以在Linq完成吗?
我一直在使用Incanter来满足我的图形需求,这对我之前的需求来说已经足够但速度很慢.
现在我需要在JPanel中嵌入一个图形.用户需要通过拖动和单击与图形交互(例如,单击程序需要接收和处理的某些点).放大出局也是必须的.
我在其他SO讨论中听说过JFreeChart,但是我看到Incanter使用它作为它的图形引擎,然后它看起来有点慢.它实际上很快,但也许Incanter做的事情会减慢它的速度?
我正在绘制高达200万点(简单的xy-plot,真的),但通常会减少图形.使用Matlab,这可以在几秒钟内绘制,但Incanter可以挂起几分钟.
那么JFreeChart是如何走的?或者其他什么,考虑到我的需求?
(此外,它需要是免费的,因为它适用于研究.)
我已经尝试使用OpenGL通过Penumbra尝试使用其Graphics上下文直接在JPanel上绘图.
这将是很好的,除了我遇到了一些麻烦...我编译我的代码,并且〜25次中的〜1次,图形(这是一个例子的矩形)绘制得很好.其他~24次,它没有.
这是我的代码:
(def main
(let [frame (JFrame. "This is a test.")
main-panel (JPanel. (GridBagLayout.))
tpan (proxy [JPanel] [] (getPreferredSize [] (Dimension. 600 400)))]
(doto frame
(set-content-pane
(doto main-panel
(grid-bag-layout
:gridx 0 :gridy 0
tpan
:gridx 0 :gridy 1
xy-label)))
(pack-frame)
(set-visible))
(draw-line tpan Color/RED 250 250 50 50)))
Run Code Online (Sandbox Code Playgroud)
功能draw-line如下:
(defn draw-line [panel color x y w h]
(let [graphics (.getGraphics panel)]
(doto graphics
(.setColor color)
(.drawRect x y w h))))
Run Code Online (Sandbox Code Playgroud)
我不知道发生了什么事.起初我以为这是我正在研究的参考文献,但后来我把它们拿出来,仍然有这些问题.我也重置了lein和slime/swank和emacs.我很困惑.
像往常一样,任何帮助将不胜感激.我希望这是一个有答案的问题!最近,我似乎在问不可能:)
如何在Clojure中处理大型二进制数据文件?假设数据/文件大约为50MB - 小到足以在内存中处理(但没有简单的实现).
以下代码正确地从小文件中删除^ M,但它会抛出OutOfMemoryError较大的文件(如6MB):
(defn read-bin-file [file]
(to-byte-array (as-file file)))
(defn remove-cr-from-file [file]
(let [dirty-bytes (read-bin-file file)
clean-bytes (filter #(not (= 13 %)) dirty-bytes)
changed? (< (count clean-bytes) (alength dirty-bytes))] ; OutOfMemoryError
(if changed?
(write-bin-file file clean-bytes)))) ; writing works fine
Run Code Online (Sandbox Code Playgroud)
似乎Java字节数组不能被视为seq,因为它非常低效.
在另一方面,提供解决方案aset,aget并且areduce是臃肿,丑陋的和必要的,因为你不能真正使用Clojure的序列库.
我错过了什么?如何在Clojure中处理大型二进制数据文件?
我是Pandas和Zipline的新手,我正在努力学习如何使用它们(并将它与我拥有的这些数据一起使用).任何类型的提示,即使没有完整的解决方案,将非常感激.我已经尝试了很多东西,并且已经非常接近,但Exception: Reindexing only valid with uniquely valued Index objects特别是遇到了索引问题.[Pandas 0.10.0,Python 2.7]
我试图通过以下形式转换我在postgres中的数千种股票的月度回报数据:
ticker_symbol :: String, monthly_return :: Float, date :: Timestamp
Run Code Online (Sandbox Code Playgroud)
例如
AAPL, 0.112, 28/2/1992
GS, 0.13, 30/11/1981
GS, -0.23, 22/12/1981
Run Code Online (Sandbox Code Playgroud)
注意:报告的频率是每月一次,但这里会有相当多的NaN数据,因为我在这里的6000多家公司并非同时出现这些数据.
...到下面描述的形式,这是Zipline运行其后测试器所需要的.(我想.Zipline的backtester可以轻松地使用这样的月度数据吗?我知道它可以,但是这样做的任何提示?)
以下是DataFrame(时间序列?这个怎么说?),我需要的格式:
> data:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2268 entries, 1993-01-04 00:00:00+00:00 to 2001-12-31 00:00:00+00:00
Data columns:
AA 2268 non-null values
AAPL 2268 non-null values
GE 2268 non-null values
IBM 2268 non-null values
JNJ 2268 non-null values
KO 2268 non-null values
MSFT 2268 non-null …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个(很多,很多)返回数据列转换为收盘价格列.在Clojure中,我会使用reductions,就像reduce,但返回所有中间值的序列.
例如
$ c
0.12
-.13
0.23
0.17
0.29
-0.11
# something like this
$ c.reductions(init=1, lambda accumulator, ret: accumulator * (1 + ret))
1.12
0.97
1.20
1.40
1.81
1.61
Run Code Online (Sandbox Code Playgroud)
注意:实际收盘价无关紧要,因此使用1作为初始值.我只需要一个"模拟"收盘价.
我的数据的实际结构是TimeSeries的命名列的DataFrame.我想我正在寻找一个类似的功能applymap,但是我宁愿不做一些hacky这个功能并从中引用DF(我想这是解决这个问题的一个方法吗?)
另外,如果我想保留returns数据,但我的收盘价格是多少呢?我应该返回一个元组,并让TimeSeries属于那个类型(returns, closing_price)吗?
RegEx在这里测试什么?
function chksql(){
if (/^\s*(?:delete|drop|truncate|alter)/.test(v)) return false;
}
Run Code Online (Sandbox Code Playgroud)
我只知道它与正则表达式混合在一起,但无法弄清楚它的含义.
我错过了一个简短的语法来表达对Clojure函数的基本操作.正因为如此,我开始使用º作为速记comp(因为它是更接近数学运算符,但交通方便),并¬为partial(因为缺少提醒参数的我).
你对此有何看法?是否有用或者是否存在使代码混淆的风险?
clojure ×6
java ×2
pandas ×2
python ×2
.net ×1
binary-data ×1
c# ×1
conventions ×1
convolution ×1
etl ×1
javascript ×1
linq ×1
lisp ×1
macros ×1
regex ×1
swing ×1
zipline ×1