Matlab/F#/R进行数据分析和建模算法的经验,vb.net输给他了

news2024/10/6 1:38:58

微软放弃了vb.net的开发,但是持续花费巨资投入F#,简单一看他的语法就是qbasic ,vb6一样。鹿死谁手,谁能相信vb.net竟然被f#给干掉了。外面有vb6语法的python成了全球第一的编程语言,内部还有强大的教授开发的这工具扯后腿。

fdf52787d54b4bd68895aa9935df2d3b.png

 有人说为什么中国搞不出像matlab这样的计算工具?

但是很多语法又太简单抽象了,甚至都看不懂了。都有点像汇编一样,或者 cmd命令行一样生涩难懂。变成了一个高级的语言,如果把它用于专业的科学计算,这个事情使用matlab完全可以解决,因为他可以编译com dll,给不同的编程语言直接调用。

所以有的时候我都觉得他不应该像一门编程语言去发展,应该把它当成.net的一个插件,扩展包DLL。

一些复杂的数学运算,我感觉直接写个控件,或者使用第三方软件生成动态库dll,activex dll都足够了。看到有个外国大牛,确实把他当成matlab一样使用:

matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件,这工具居然还可以编译动态dll,com dll,而且还跨平台。http://t.csdnimg.cn/P1LPf

在使用matlab编译的exe或者dll,移植到一个没有matlab的电脑时可能无法运行,需要在官网上下载对应的运行时进行安装后,程序才能正常执行

--------

matlab编程语言是:C++语言。

Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。

MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。

使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

===========

一段时间以来,我一直在使用 F# 对算法进行建模,然后再用 C++ 对其进行编码,之后还使用它来检查 C++ 代码的结果,并对照真实世界记录的数据。

对于事物的建模方面,它非常方便,但对于“数据混搭”之类的东西,从 CSV 和其他来源提取数据、生成统计数据、绘制图表等,我的同事总是取笑我(“为什么要自己编写代码?它内置于 MatLab")。

我有另一位同事非常信赖 R,它也有“内置”的图表功能。

我知道 MatLab、R 和 F# 严格来说不具有可比性,所以我并不是要进行“功能比较”。我只是想知道其他人在这些分析前和分析后的场景中使用什么,以及他们对此有多满意。

(如果有人致力于将 Microsoft Charts 包装成 F# 友好的东西,请告诉我,我很乐意参与...)

(注意:这个问题的答案将是主观的,但请根据经验)

最佳答案

我对 F# 的经验很少,但关于 C++/Matlab/R:如果程序的执行速度最重要,请使用 C++。如果实现的速度最重要,请使用 Matlab 或 R。出于多种原因,这是事实,其中最重要的是它们庞大的数学/统计包库。

Matlab 和 R 都可以通过并行加速:所以一般来说,我认为实现的速度和质量应该是一个更大的问题。在应用程序的设计中,这就是编程的真正“值(value)”所在。如果您可以同时编写 3 或 4 个优秀的 R 程序来编写 1 个优秀的 C++ 程序,这不是一个小命题。

关于F#:既然它是微软框架的一部分,它肯定有很多东西可以提供。如果您在 Visual Studio 中进行开发或处理大型 .Net 项目(例如),则使用 F# 可能很有意义。另一方面,您可以从 .Net 应用程序中同时调用 Matlab 和 R,因此我可能认为它们的库应该是一个更大的问题。例如,参见 this article as an example for R和 the Matlab Builder .

长话短说:比较 F# 和 Matlab/R 并不是一个好的比较。 F# 是一种通用编程语言,而 Matlab/R 可以看作是海量的数学/数据分析工具包。有些人从 F# 调用 Matlab 或 R 以利用每种语言的优势(例如,参见 this discussion、this article on Matlab/F# 或 this article on R/F#)。

就图表而言:R 在这方面非常强大。看看the graphics view on CRAN和 this series of posts on the LearnR blog about Lattice and ggplot2 .

关于matlab - 您使用 Matlab/F#/R 进行数据分析和建模算法的经验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642201/

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1357510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】链表简介及单链表的实现

简单不先于复杂,而是在复杂之后。 文章目录 1. 链表1.1 链表的概念及结构1.2 链表的分类1.3 无头单向非循环链表的实现 1. 链表 1.1 链表的概念及结构 概念:链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序…

Jvm垃圾收集器系列之Parallel Scavenge收集器(个人见解仅供参考)

问:什么是Parallel Scavenge? 答:Parallel Scavenge是Java HotSpot虚拟机中的一种垃圾收集器,它主要用于提高应用程序的吞吐量。 问:Parallel Scavenge的主要目标是什么? 答:Parallel Scavenge的…

Hive - Select 使用 in 限制范围

目录 一.引言 二.Select Uid Info 1.少量 Uid 2.大量 Uid ◆ 建表 ◆ 本地 Load ◆ HDFS Load ◆ Select In 三.总结 一.引言 工业场景下 Hive 表通常使用 uid 作为用户维度构建和更新 Hive 表,当我们需要查询指定批次用户信息时,可以使用 in …

自制Java镜像发布到dockerhub公网使用

文章目录 问题现象解决制作Java镜像发布使用 问题现象 书接上回,上周处理了一个docker问题,写了篇博客:自定义docker镜像,ubuntu安装命令并导出我们使用谷歌的jib插件打包,详情可以参考这篇文章:Spring Bo…

unity C#中Array、Stack、Queue、Dictionary、HashSet优缺点和使用场景总结

文章目录 数组 (Array)列表 (List<T>)栈 (Stack<T>)队列 (Queue<T>)链表 (LinkedList<T>)哈希表 (Dictionary<TKey, TValue>) 或 HashSet<T>集合 (Collection<T>) 数组 (Array) 优点&#xff1a; 高效访问&#xff1a;通过索引可以…

uniCloud 云函数

相对于云函数&#xff0c;官方更推荐使用 云对象 新建云函数 编辑云函数 uniCloud-aliyun/cloudfunctions/hello_func/index.js use strict; exports.main async (event, context) > {let {name} eventreturn 你好&#xff0c;${name}! };云函数接收的参数从event中解构获…

二进制安装包安装Prometheus插件安装(mysql_exporter)

简介 mysql_exporter是用来收集MysQL或者Mariadb数据库相关指标的&#xff0c;mysql_exporter需要连接到数据库并有相关权限。既可以用二进制安装部署&#xff0c;也可以通过容器形式部署&#xff0c;但为了数据收集的准确性&#xff0c;推荐二进制安装。 一&#xff0c;下载安…

“百模大战:AI行业的技术竞争与发展趋势“

文章目录 每日一句正能量前言百模大战影响推理配置后记 每日一句正能量 修行不是抬起头朝天上看而是低下头学会谦卑和诚实。 前言 到目前为止&#xff0c;如果要评选2023年热度最高&#xff0c;影响力最大的一个概念&#xff0c;当属AI大模型了。这轮由ChatGPT引爆的技术热潮&…

K8S--部署SpringBoot项目实战

原文网址&#xff1a;K8S--部署SpringBoot项目实战-CSDN博客 简介 本文介绍K8S如何部署SpringBoot项目。 1.生成应用的docker镜像 把SpringBoot项目的jar包打包为docker镜像&#xff0c;见&#xff1a;Docker Compose--部署SpringBoot项目--实战-CSDN博客 创建后的镜像名称…

论文悦读(7)——NVM文件系统之Trio(SOSP‘23)文件系统

TRIO&#xff08;SOSP23&#xff09; 1. 背景&#xff08;Background&#xff09;1.1 NVM Technologis1.2 File System Customization1.3 Userspace NVM File Systems 2. 观察与动机&#xff08;Observation & Motivation&#xff09;3. 设计与实现&#xff08;Design &…

(18)Linux 实现简易版shell

前言&#xff1a;做一个 "会创建&#xff0c;会终止&#xff0c;会等待&#xff0c;会程序替换" 的简易 shell 。 1、显示提示符和获取用户输入 shell 本质就是个死循环&#xff0c;我们不关心获取这些属性的接口&#xff0c;如果要实现 shell&#xff1a; 1&…

conda环境下Could not create share link解决方法

1 问题描述 在运行chatglm-6B项目时&#xff0c;运行python web_demo.py&#xff0c;出现如下错误&#xff1a; (chatglm) [rootlocalhost ChatGLM2-6B]# python web_demo.py Loading checkpoint shards: 100%|██████████████████████████████…

scratch给数据清单排序 2023年12月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析

目录 scratch给数据清单排序 一、题目要求 1、准备工作 2、功能实现 二、案例分析

性能优化-OpenMP基础教程(三)-Android上运行OpenMP

本文主要介绍如何在一个常规的Android手机上调试OpenMP程序&#xff0c;包括Android NDK的环境配置和使用JNI编写一个OpenMP程序运行在Android手机中。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#…

js——json对象相互转化——js基础积累

js——json对象相互转化——js基础积累 需求场景解决步骤1&#xff1a;定义一个变量接收此字段&#xff0c;方便处理解决步骤2&#xff1a; { 外面的双引号要去掉解决步骤3&#xff1a;使用正则去除参数中的\\解决步骤4&#xff1a;如果此参数必须以{开头&#xff0c;以}结尾解…

Java学校教务管理系统源码带微信小程序

运行环境&#xff1a;jdk8mysql5.7IntelliJ IDEAmaven 技术&#xff1a;springbootmybatislayuishirojquery 教务管理系统是一个基于网络的在线管理平台, 帮助学校管理教务系统&#xff0c;用一个帐号解决学校教务教学管理&#xff0c; 灵活的定制符合学校自己实际情况的教务系…

Eclipse下安装GDB

主要参考资料&#xff1a; 链接: https://blog.csdn.net/u013609041/article/details/18967837 目录 简介Eclipse中安装和配置GDB错误 简介 Eclipse是一款开发软件。 GDB是一个调试软件&#xff0c;但是GDB通常是运行在linux下的&#xff0c;无法直接在windows下运行&#xff…

RabbitMQ安装与应用

文章目录 1. RabbitMQ1.1. 同步通讯与异步通讯1.2. 异步通讯的优缺点1.3. 几种MQ的对比1.4. docker安装运行RabbitMQ 流程1.5. RabbitMQ的几个概念1.6. 五种模型1.6.1. 基本消息队列 1.7. 基本使用1.7.1. 1建立连接时会出现以下界面![在这里插入图片描述](https://img-blog.csd…

Redis第四讲——Redis的数据库结构、删除策略及淘汰策略

一、redis中的数据库 redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中。db数组的每项都是一个redis.h/redisDb结构&#xff0c;而每个redisDb结构就代表一个数据库。在初始化服务器时&#xff0c;程序会根据服务器状态的dbnum属性来决定应该创建多…

python+selenium爬虫笔记

本文只是做例子&#xff0c;具体网站路径麻烦你们换下&#xff0c;还有xpath路径也换下 一、安装所需要的组件&#xff08;此处采用谷歌&#xff09; 1、安装驱动 查看你的浏览器版本&#xff0c;去安装对应的版本 下载驱动 下载驱动路径 之前版本的 输入这个路径下载下来解压…