gpt4 book ai didi

php - 我可以在网站上运行 MATLAB 代码吗?

转载 作者:可可西里 更新时间:2023-10-31 22:47:19 25 4
gpt4 key购买 nike

我有一个 BE 项目,其代码在 MATLAB 中,但我需要在网页上显示结果。我想知道我是否可以直接在网站上运行我的代码?如果没有,你能告诉我哪种语言是更好的选择吗?我在想可能是 ASP、HTML 和 PHP。

最佳答案

您可以使用 MATLAB 编译器将 MATLAB 应用程序编译成独立的可执行文件。

在提示符下键入“mcrversion”以确定您是否安装了此软件包 - 如果您尚未付费,则很可能没有安装 - 与 Mathworks 提供的大多数扩展一样,您需要付费。

如果您不需要编译代码,而只需运行它,您可以通过命令行调用 MATLAB 来执行您需要的操作。

正如 Sinan 所提到的,在这两种情况下您都可以使用像 passthu 这样的函数。

另一种方法是为 PHP 创建一个扩展以在 C 中使用 MATLAB。MATLAB 提供了一个 C API,它允许您使用 MATLAB 附带的库调用引擎(有关示例,请参见“extern”文件夹)。

有关创建扩展的信息,请参见以下链接(非常简单):

http://devzone.zend.com/article/1021

在 MATLAB 或谷歌中搜索“MATLAB C/Fortran API”以获取有关函数的文档。基本上,您可能需要调用 EngOpen 来调用引擎并返回一个指针。

使用 engEvalString 评估字符串(您可以通过这种方式加载 .m 文件,或者执行您可以在典型的 matlab 命令行中执行的任何操作)。

当您需要查看结果(在 matlab 中通常输出到命令行的任何内容)时,只需省略命令后的分号并使用 engOutputBuffer 捕获输出。

这是我写的一个简化示例:

#include "mat.h"
#include "engine.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFER_SIZE 256

int main()

Engine *ep;
char buffer[BUFFER_SIZE]; // The buffer used to capture output.

buffer[BUFFER_SIZE] = '\0'; /* Terminate the last character of the buffer. */

if (!(ep = engOpen(NULL))) {
fprintf(stderr, "\nCan't start MATLAB engine\n");
return EXIT_FAILURE;
}

if (engEvalString(ep, "load data/mymatfile.mat") != 0)
printf("error evaluating expression\n");

engOutputBuffer(ep, buffer, BUFFER_SIZE);

/* No output returned. */
if (engEvalString(ep, "p = 1+1;") != 0)
printf("error evaluating expression\n");

/* Output written to buffer- Note the omitted character (;). */
if (engEvalString(ep, "q = p+1 "))
printf("error evaluating expression\n");


/* You will probably need to trim the whitespace in the buffer contents.
I estimated +5 to pull out the prompt: ">>", but it depends on which version
you have, for example, the student version displays "EDU >>\n". */
printf("print the contents of the buffer:%s\n", buffer+5);

/* Turn off output buffering. */
engOutputBuffer(ep, NULL, 0);

/* Close the engine. */
engClose(ep);

exit(0);

}

一旦您编译了基本的 PHP 扩展,将对上述引擎的调用放入您的扩展中,您就可以使用您在扩展中定义的 PHP 函数调用 MATLAB。

编译 MATLAB API 可能是最难的部分。这是我的 Makefile 的内容(没有 PHP 扩展代码)。

phpmat: phpmat.o
gcc phpmat.o
/usr/local/matlabR2009a/extern/lib/glnx86/version4.o
/usr/local/matlabR2009a/bin/glnx86/libeng.so
/usr/local/matlabR2009a/bin/glnx86/libmex.so -o phpmat

phpmat.o: phpmat.c
gcc -c phpmat.c -I/usr/local/matlabR2009a/extern/include
-L/usr/local/matlabR2009a/extern/lib/glnx86
-L/usr/local/matlabR2009a/bin/glnx86
-L/usr/local/matlabR2009a/sys/os/glnx86 -L/usr/local/matlabR2009a/bin/glnx86

clean:
rm *.o

您可能需要在编译/调用扩展之前设置您的 LD_LIBRARY_PATH...但是还有替代方法:

LD_LIBRARY_PATH=/usr/local/matlabR2009a/extern/lib/glnx86:/usr/local/matlabR2009a/bin/glnx86:/usr/local/matlabR2009a/sys/os/glnx86:$LD_LIBRARY_PATH

关于php - 我可以在网站上运行 MATLAB 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1451503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com