基于.NET实现Matlab备用方案

今日圈内的朋友都在刷这样的消息:

正值哈工大百年校庆之际,哈工大、哈工程的师生收到了MATLAB软件停止服务的邮件,在与 MATLAB 开发公司 MathWorks 交涉之后,才得知因为美国政府实体名单的原因,相关授权已被中止。美国商务部宣布,将共计33家中国公司及机构等列入出口限制实体清单,其中就包括哈工大和哈工程两所院校。这次发布的清单从硬件扩展到软件层面,以后哈工大师生写论文不能再使用MATLAB处理数据了。 MATLAB是美国MathWorks在1984年推出的商用数学软件,目前世界上 180 多个国家的超过三百万工程师和科学家在使用 MATLAB 和 Simulink。经过十几年的发展,MATLAB已经超越了普通数学软件,成为理工科专业必不可少的工具。MATLAB用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。通俗点说只要是数学方面的问题都可以用它来做,所以它的应用领域非常广泛。

借助AnyCAD Rapid .NET SDK仅用2分钟,我们就可以完成一个简单的MyMatlab应用,可以实现曲面的模拟功能。具体过程如下:

1 准备工作

安装程序环境:

注意:如果没有安装VS2019,则需要安装一下最新的VC++的运行时库,下载链接如下:

1.1 创建一个控制台应用

1.2 使用nuget添加组件

使用nuget安装可以自动添加.Net程序集引用

2 开始写代码

以可视化曲面:f(x,y) = sin(x) * cos(y)


namespace MyMatlab
{
    class Program
    {
        static void Main(string[] args)
        {
            var matplot = Matplot.Create("MyMatlab 2020");

            var xRange = new PlotRange(0, 3.14f * 2, 0.1f);
            var yRange = new PlotRange(0, 3.14f * 2, 0.1f);
            matplot.AddSurface(xRange, yRange, (u, v) =>
            {
                double x = u;
                double y = v;
                double z = Math.Sin(u) * Math.Cos(v);

                return new GPnt(x, y, z);
            });

            matplot.Show(800, 600);
        }
    }
}

2.3 编译运行

完整项目工程: https://gitee.com/anycad/MyMatplot

2.4 测试一下

函数:f(x,y) = sin(x) + cos(y)

3 小结

诚然,实现一个像MATLAB功能一样丰富的软件并非一朝一夕可完成,但千里之行始于足下,不积小步无以至千里,秉持水滴石穿,只要功夫深铁棒磨成针的精神,实现一个功能强大的数学软件也并非不可能。

补充,最近老邹读到一段话感触很深:

备胎危机”就像一道闪电,划破了黑暗的长空,那些隐藏的卡脖子技术在短暂的光亮之中露出了狰狞的牙齿。备胎危机意识,空前地普及了人们对于“工业暗器”的认识:它不动声色地潜伏在工业领域,体量很小,但却为工业创造了巨额财富。你离不开它,你看不到它。它是最不起眼、最中性的强大工具,然而,在极端的时候它或许会成为致命的政治武器。

基于.NET实现Matlab备用方案的更多相关文章

  1. 基于Quick-cocos2d-x的资源更新方案 二

    写在前面 又是12点半了,对于一个程序员来说,这是一个黄金时间,精力旺盛,我想,是最适合整理和分享一些思路的时候了. 自从上次写了 基于Quick-cocos2d-x的资源更新方案 同样可见quick ...

  2. 基于Ruby的watir-webdriver自动化测试方案与实施(五)

    接着基于Ruby的watir-webdriver自动化测试方案与实施(四) http://www.cnblogs.com/Javame/p/4164570.html 继续 ... ... 关于特殊控件 ...

  3. 基于Ruby的watir-webdriver自动化测试方案与实施(四)

    接着基于Ruby的watir-webdriver自动化测试方案与实施(三) http://www.cnblogs.com/Javame/p/4159468.html 继续 ... ...   首先回忆 ...

  4. 基于Ruby的watir-webdriver自动化测试方案与实施(三)

    接着基于Ruby的watir-webdriver自动化测试方案与实施(二) http://www.cnblogs.com/Javame/p/4159468.html 继续 ... ...   编写脚本 ...

  5. 基于Ruby的watir-webdriver自动化测试方案与实施(二)

    接着基于Ruby的watir-webdriver自动化测试方案与实施(一) http://www.cnblogs.com/Javame/p/4159360.html 继续 ... ...   回顾 软 ...

  6. 基于Ruby的watir-webdriver自动化测试方案与实施(一)

    基于Ruby的watir-webdriver自动化测试方案与实施(五)   基于Ruby的watir-webdriver自动化测试方案与实施(四)   基于Ruby的watir-webdriver自动 ...

  7. 基于Jenkins的持续交付方案

    简介 Jenkins是开源的自动化编译.测试.部署的Web应用程序一个持续性交付应用 Jenkins的优势 1.Jenkins在国内的开发者中认可度较高,很多创业公司的自建持续交付系统的选择大部分都是 ...

  8. Upsync:微博开源基于Nginx容器动态流量管理方案

    Upsync:微博开源基于Nginx容器动态流量管理方案 https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=404151075& ...

  9. 基于ERNIELayout&pdfplumber-UIE的多方案学术论文信息抽取

    本项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5196032?contributionType=1 基于ERNIELayout& ...

  10. 基于Quick-cocos2d-x的资源更新方案 一

    图片来自网络 思绪何来 昨天写了一篇关于更新方案的理论 游戏开发:通过路径搜索优先级来进行补丁升级(从端游到手游) 今天继续细化一下 由于新项目采用的是Quick-cocos2d-x,那我就直接给出我 ...

随机推荐

  1. WCF 使用动态代理精简代码架构 (WCF动态调用)

    使用Castle.Core.dll实现,核心代码是使用Castle.DynamicProxy.ProxyGenerator类的CreateInterfaceProxyWithoutTarget方法动态 ...

  2. 版本升级 | v3.0.0卷起来了!多种特殊情况解析轻松拿捏!

    在过往发行版的基础上,结合社区用户提供的大量反馈及研发小伙伴的积极探索,项目组对OpenSCA的解析引擎做了全方位的优化,v3.0.0版本正式发布啦~ 感谢所有用户的支持和信任~是很多人的一小步聚在一 ...

  3. <vue 组件 3、父子组件相互访问>

    代码结构 一.     01-组件访问-父访问子 1. 效果 点击后在父组件里展示子组件的参数 2.代码 01-组件访问-父访问子.html <!DOCTYPE html> <htm ...

  4. 搭建 spring boot + mybatis plus 项目框架并进行调试

    本文为博主原创,未经允许不得转载: 1.创建一个spring boot的工程应用: File ---- > New ----->Project ----> 然后选中Spring In ...

  5. Spring cloud gateWay 限流器限流(一)

    转载请注明出处: spring cloud 提供了限流操作的功能,其使用步骤如下: 1.引入maven依赖: <dependency> <groupId>org.springf ...

  6. 【FreeRTOS】内核查找最高优先级就绪任务

    查找最高优先级就绪任务 FreeRTOS\Source\tasks.c #if ( configUSE_PORT_OPTIMISED_TASK_SELECTION == 0 ) /* If confi ...

  7. JS - this 操作 dom , 添加样式

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  8. linux环境C语言实现:h264与pcm封装成mp4视频格式

    前言 H.264是压缩过的数据,PCM是原始数据,MP4是一种视频封装格式.实际H.264与PCM不能直接合成MP4格式,因为音频格式不对.这里需要中间对音频做一次压缩处理.基本流程为:将PCM音频数 ...

  9. [转帖]构建 TiFlash 副本

    https://docs.pingcap.com/zh/tidb/stable/create-tiflash-replicas#%E6%8C%89%E8%A1%A8%E6%9E%84%E5%BB%BA ...

  10. [转帖]模拟enq: TX - row lock contention争用

    https://www.modb.pro/db/623036 enq: TX - row lock contention它表示一个事务正在等待另一个事务释放被锁定的行.这种等待事件通常发生在并发访问数 ...