百科问答小站 logo
百科问答小站 font logo



如何评价国产软件 TRUFFER(可替代 MATLAB)? 第1页

  

user avatar   harryzhou-12 网友的相关建议: 
      

首先,我间接搞到了 @Truffer 慷慨分享的部分源码:

很明显这只是项目很少的一部分,某高赞回答上 @jeffswt 的命令行图并非来自于这些代码,所以我对关于Octave部分的真实性不加评论。

出于学习目的,我打开了CMatrix.cs,看上去是这样的:

Matrix和CMatrix大同小异(实矩阵运算和复矩阵完全分开),源码放到最后供大家观赏,这里只写了我浅浅拜读一下看到的一些亮点...

我没有学过软件工程,但数值方法还是略知一点的(本来这几个文件也没啥工程可言),所以关注点放到了数值方法上。

首先,矩阵数值运算就涉及到解数值方程组(MATLAB里面的 A),我一直以来就好奇MATLAB的具体是如何实现的,看到上面只有一个System,我更是不由自主地兴奋了起来...(似乎忘记了C#这个奇怪的点)... 然而,我前前后后翻了个遍,也没有看到任何能求线性方程组(或其最优最小二乘)解的方法,甚至没有一个能求逆/广义逆的方法...看到开头“初级版本”的说明,我不禁释然...

我并不甘心,希望找到一个(300年来应用数学发明的)数值方法,翻到最后,眼前一亮:FFT!(先忽略为什么对矩阵对象的FFT没有维数输入方式),然后被惊呆了:

       using System; using System.Text; using System.Data; namespace Legal.Math {  public class CMatrix         {          //省略属性和其他方法   public int Length   {    get    {     if (_length <= 0) _length = Rows * Columns;     return _length;    }    private set    {     _length = 0;    }   }   #endregion                 public static CMatrix FFT(CMatrix Ma)   {    CMatrix p = new CMatrix(Ma.Rows, Ma.Columns);    for (int k = 0; k < Ma.Length; k++)    {     double x = 0.0;     double y = 0.0;     double s = 0.0;     double t = 2 * System.Math.PI * k / Ma.Length;     for (int i = 0; i < Ma.Length; i++)     {      x += Ma[i].Real * System.Math.Cos(s) + Ma[i].Imaginary * System.Math.Sin(s);      y += Ma[i].Imaginary * System.Math.Cos(s) - System.Math.Sin(s) * Ma[i].Real;      s += t;     }     p[k] = new Complex(x, y);    }    return p;   }         } }      

多么简洁的代码!根本不用什么补零,不用什么玄学二进制排序,不用什么递归变循环...别问,要问就是算!俩循环套起来算!...唯一的缺点就是这应该叫DFT,而不是使用FFT算法的DFT...

分割--------------------------------

题主问如何评价,问题是我感觉这三个源代码和演示效果没啥关系,就矩阵运算而言,这几个代码文件离MATLAB大概还差那么几百万行代码吧(参考openblas)。所以这些源代码大概是人家作者放出来骗人的吧...至于真的TRUFFER,没有公开的应用程序,所以不评价。


源码(作者在里面说“比开源还开源”,所以就都放上来了)

链接:pan.baidu.com/s/1q0-SDV

提取码:yj94

(大家都在喷百度网盘,但这个文件不怕限速...)


user avatar   li-mu-gen-19 网友的相关建议: 
      

大部分欧洲国家和美国,不但给你孩子冠姓,还给你冠姓,还有首歌形容结婚:以我之姓 冠你之名。


user avatar    网友的相关建议: 
      

大部分欧洲国家和美国,不但给你孩子冠姓,还给你冠姓,还有首歌形容结婚:以我之姓 冠你之名。




  

相关话题

  怎么把MATLAB循环程序中每一步disp的输出结果放到矩阵中或者直接放到表格中?急急急急急急? 
  百度地图为什么会自动在后台下载单田芳和郭德纲的电台节目? 
  如果真的有个共享男友/女友软件上市,会不会一上线就成为潮流? 
  为什么问下载高清电影,可以得到热情的解答,但是问如何破解软件或者激活盗版Windows却招来一片骂声? 
  为什么有些程序员会鄙视MATLAB? 
  有些PDF文件不能修改内容!怎么办? 
  软件里最令人印象深刻的彩蛋或游戏隐藏关有哪些? 
  为什么中国程序员工资那么高,连一个 MATLAB 的替代品都开发不出来? 
  如果中国重新开发像MATLAB、solidworks这样的软件大概需要多久? 
  有没有什么工具可以帮助理解源代码的? 

前一个讨论
正切函数tanx这个部分分式无穷级数展开式怎么证明?
下一个讨论
数学分析中,关于某个变量一致是什么意思?





© 2024-06-23 - tinynew.org. All Rights Reserved.
© 2024-06-23 - tinynew.org. 保留所有权利