Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Matlab与visualc++;?_C++_Visual Studio 2008_Matlab_Programming Languages - Fatal编程技术网

C++ Matlab与visualc++;?

C++ Matlab与visualc++;?,c++,visual-studio-2008,matlab,programming-languages,C++,Visual Studio 2008,Matlab,Programming Languages,我正在做一个Windows应用程序,它使用很多图表。它实际上是一个数据查看器。我开始学习Matlab,因为它更简单,但我意识到它太慢了。我想换一种语言。有人推荐我Visual C++或java。但我不确定。我应该用什么语言?我会用C。它比C++更容易,与Windows平台很好的集成。只要找到一个免费的图形库就可以了 根据您对语言的偏好,还有很多其他选择。Python或C++的Eg. Qt。 < P>这取决于您的需求是什么。 使用matlab的优点是它在数值计算方面很强。如果您不需要,那么使用ma

我正在做一个Windows应用程序,它使用很多图表。它实际上是一个数据查看器。我开始学习Matlab,因为它更简单,但我意识到它太慢了。我想换一种语言。有人推荐我Visual C++或java。但我不确定。我应该用什么语言?

我会用C。它比C++更容易,与Windows平台很好的集成。只要找到一个免费的图形库就可以了


根据您对语言的偏好,还有很多其他选择。Python或C++的Eg. Qt。

< P>这取决于您的需求是什么。

使用matlab的优点是它在数值计算方面很强。如果您不需要,那么使用matlab没有任何好处。在本例中,所有这些语言都可以,其他许多语言(Python、C#、…)也可以。这取决于你对哪种语言最满意

如果你想利用matlab的优势,那么:

  • 尝试在matlab中进行优化。大多数优化技术都与语言无关
  • 有一些工具可以自动将matlab翻译成C。然后,您可以尝试在启用所有优化的情况下进行编译。然而,我严重怀疑这会有多大帮助,特别是考虑到GUI部分

  • 据我所知,最常用的方法是首先在Matlab上进行概念证明或主要算法,因为它易于使用,便于数学计算,然后将其转换为“真实”编程语言,以提高性能。通常C或C++充当“真实”语言,但在你的例子中,为了做一个Windows应用程序,也许C是最好的选择。

    < P>首先Visual C++不是一个语言是开发应用程序的IDE。p> 第二。。。你懂哪种语言?你可以有几个选择。看看:

    • C+++Qt(我的首选选项,功能强大且易于理解)
    • C++.NET或WPF
    • 爪哇

    如果你能告诉我们更多的信息,我们可以找到一种符合你需要的语言。

    在我看来,使用另一种“更快”的语言所带来的速度提升不如改进你的算法

    MATLAB的“问题”是它允许你做一些讨厌的事情,比如在一个紧循环中调整矩阵的大小。您应该真正尝试使用以下命令查明瓶颈:

      profile on
      ... run your program
      profile off
      profile report
    
    这将为您提供有关哪个函数需要多长时间才能执行以及哪一行造成最大瓶颈的详细信息。您还可以看到一个函数被调用了多少次,并且包含了一个M-Lint代码检查报告


    这些度量和提示可以向您显示算法的瓶颈。如果您确定没有办法使用更智能的算法来减少函数的调用次数/速度。例如,我真的需要一个大的2d矩阵,其中一个智能向量足够大,或者如果我发现了一个工件,为什么我还要继续搜索工件。您可以在c/c++中编写遇到最多性能问题的函数,并将其用作matlab中的函数。如果正确选择在c/c++中实现哪些函数,您可以获得很大的加速。从MATLAB调用c/c++函数会有一定的开销,或者更准确地说,在c/c++中从MATLAB获取数据会有一定的开销,因此调用10000次的函数在c/c++中不是最好的实现方法,你可以更好的使用函数调用堆栈。

    不要忘记你可以在C++中创建可以从Matlab调用的函数。还有TADA,您可以访问这两种环境

    我发现,如果应用程序变得更复杂,MATLAB中的GUI编程会变得非常糟糕。顺便说一句,也可以从Java轻松调用MATLAB(反之亦然,当前版本基本上提供了一个交互式Java控制台)。

    作为旁注,如果您仍然需要MATLAB的数学能力,您可能想看看。它是开源的,免费的,它有它可以与其他C语言或C++集成的例子。我创建了Scilab在后台运行的项目,以执行所有数据数学操作;并用C#的库显示它们。像魔术一样工作

    首先,正如其他答案所提到的,您需要分析代码以找出瓶颈所在。我会退房,特别是。这将帮助您找出代码中所有工作的完成位置

    如果减速的原因与数据处理有关,则可能有多种方法可以加快速度(矢量化、编写mex文件等)

    如果放缓的根源是您的GUI,那么这可能更容易解决。有许多来自Doug和的博客文章,我已经看到了这些关于GUI设计的文章。还有一些关于如何处理它的问题()。如果您处理的是显示非常大的数据集,那么在MathWorks上进行文件交换可能有助于加快速度

    因为我不知道您是如何设计GUI的,所以很难给您提供更具体的建议,但是如果这成为显示数据的瓶颈,那么在您经历切换到其他语言的麻烦之前,有很多资源可以帮助您提高速度。

    • Matlab和Scilab的替代品是另一个自由软件:Octave。 我不知道Scilab的情况,但倍频程语法几乎与matlab相同,因此您可以轻松导入代码
    如果你需要花哨的工具箱,Scilab和Octave可能会让你失望,所以请检查这个

    <>你可以在C++程序中执行八度函数:

      我不认为你可以从C++程序中调用你自己的M文件函数。在过去,Matlab编译器允许用户运行Matlab程序,而无需安装Matlab,但也不能不安装一个巨大的库(如果我记得的话,250 MB)