C#似乎显示出对科学计算的一些承诺,但是我发现对于绘制二维图的绘图很less,这对于理科学生和科学家来说都是非常重要的。 有没有一种可靠的,免费的方式来创build出版质量二维情节与C#? 并能够保存为几种格式(PNG,EPS,…)。 一些类似于Python的matplotlib?
我正在努力成为一名科学程序员。 我在math和统计方面有足够的背景,但缺乏编程背景。 我发现学习如何使用一种语言进行科学编程是非常困难的,因为大多数SP的参考文献都是微不足道的。 我的工作涉及统计/财务build模,没有涉及物理模型。 目前,我广泛使用Python和numpy和scipy。 完成R / Mathematica。 我知道足够的C / C ++来读取代码。 没有Fortran的经验。 我不知道这是不是一个科学程序员的语言清单。 如果是这样的话,在科学环境中学习这些语言的语法和devise模式是一个很好的阅读列表。
我有一个问题(与我的RAM)在这里:它不能保存我想要绘制的数据。 我有足够的高清空间。 有没有解决办法来避免我的数据集“阴影”? 具体来说,我处理数字信号处理,我必须使用高采样率。 我的框架(GNU无线电)保存值(以避免使用太多的磁盘空间)二进制。 我解开它。 之后我需要阴谋。 我需要情节可缩放,互动。 这是一个问题。 是否有任何优化的潜力,或其他软件/编程语言(如R左右)可以处理更大的数据集? 其实我想要更多的数据。 但是我没有其他软件的经验。 GNUplot失败,采取类似于以下的方法。 我不知道R(喷气机)。 import matplotlib.pyplot as plt import matplotlib.cbook as cbook import struct """ plots a cfile cfile – IEEE single-precision (4-byte) floats, IQ pairs, binary txt – index,in-phase,quadrature in plaintext note: directly plotting with numpy results into shadowed functions """ # unpacking the […]
在一些科学环境中,由于大多数开发人员只知道习惯用法,并且有很多遗留代码和相关经验,所以经常不能没有FORTRAN。 坦率地说, 高性能编程没有太多其他的跨平台选项(C ++可以完成这个任务,但是语法,零开始数组和指针与某些人不兼容)。 因此,我们假设一个新的项目必须使用Fortran 90,但是我想用最新的编译器(Intel ifort,还包括Sun / HP / IBM编译器)来兼容最新的软件架构, 所以我正在考虑强加一些广为人知的常识,但在我的环境中还不是一个标准: 全局variables被禁止,没有gotos,没有跳转标签, implicit none ,等等。 “面向对象的编程”(具有数据types和相关子程序的模块) 模块化/可重用的function,有据可查的可重用的库 断言/先决条件/不变式(使用预处理器语句实现) 所有(大多数)子程序和“对象”的unit testing 一个强烈的“debugging模式”( #ifdef DEBUG )与更多的检查和所有可能的英特尔编译器检查可能(数组边界,子程序接口等) 统一并强制执行易读的编码风格,使用代码处理工具助手。 所有的目标都是要有值得信赖,可维护和模块化的代码。 而在大量的遗留代码中,可重用性并不是一个重要的目标。 我search了关于面向对象的Fortran,合同编程(断言/前置条件/等等)的参考资料,并且find了没有大型项目参与的人员所做的丑陋和过时的文档,语法和论文以及死了的项目。 任何有关此主题的良好url,build议,参考文献/书籍?
我绘制matplotlib中的两个相似的轨迹,我想用部分透明度来绘制每一行,以便红色(绘制的第二个)不会遮挡蓝色。 编辑 :这是透明线的图像。
背景 去年,我在一所大学的物理研究小组实习。 在这个小组中,我们主要使用LabVIEW编写程序来控制我们的设置,进行数据采集和分析数据。 对于前两个目的来说,这个工作相当不错,但对于数据分析来说,这是一个真正的痛苦。 最重要的是,每个人都是自学成才的,所以编写的代码通常是相当混乱的(难怪每个博士都决定从头开始重写所有的东西)。 由于IT部门严格的软件和networking规定,版本控制是未知的,不可能build立。 现在,事情确实出乎意料地好,但是自然科学的人们如何做他们的软件开发呢? 问题 一些具体问题: 你用什么语言/环境开发科学软件,尤其是数据分析? 什么库? (例如,你用什么绘图?) 是否有没有任何重要的编程背景的人的培训? 你有什么像版本控制和错误跟踪? 你会如何去努力创造一个体面的编程环境,而不是在个别科学家的方式上太多(特别是物理学家是固执的人!) 到目前为止的答案总结 (或者我的解释)到目前为止:( 2008-10-11) 似乎是使用最广泛的语言/软件包: LabVIEW的 python 与SciPy , NumPy , PyLab等(参见Brandon的答复下载和链接) C / C ++ MATLAB 几乎所有的受访者都使用版本控制; 错误跟踪和其他过程是非常不常见的。 软件木工课程是向科学家教授编程和开发技术的好方法。 如何改善事情? 不要强迫人们遵守严格的协议。 build立一个自己的环境,并向他人展示好处。 帮助他们开始使用版本控制,错误跟踪等。 回顾其他人的代码可以帮助,但请注意,不是每个人都可以欣赏这一点。
我经常听到有人抱怨MATLAB授权是多么昂贵。 那么我想知道他们为什么不使用Octave或R。 但后者是正确的? 你可以用R代替MATLAB吗?
我正在尝试在Python中实现大量的matrix – matrix乘法。 最初,我认为NumPy会自动使用我的线程化BLAS库,因为我已经针对这些库构build了它。 但是,当我看到顶部或其他东西,似乎代码根本不使用线程。 任何想法什么是错的,或者我能做些什么来轻松使用BLAS的性能?
有没有一种更有效的方法来在预先指定的箱子中取一个数组的平均值? 例如,我有一个数组数组和数组,对应于该数组中的开始和结束位置,我想只是在这些箱中的意思? 我有下面的代码,但我想知道如何可以减less和改善。 谢谢。 from scipy import * from numpy import * def get_bin_mean(a, b_start, b_end): ind_upper = nonzero(a >= b_start)[0] a_upper = a[ind_upper] a_range = a_upper[nonzero(a_upper < b_end)[0]] mean_val = mean(a_range) return mean_val data = rand(100) bins = linspace(0, 1, 10) binned_data = [] n = 0 for n in range(0, len(bins)-1): b_start = […]