C++調用matlab引擎實現(xiàn)三維圖的繪制
VS2012設置
項目–項目屬性–配置屬性–VC++目錄–包含目錄 D:\MATLAB\R2016a\extern\include
項目–項目屬性–配置屬性–VC++目錄–庫目錄
D:\MATLAB\R2016a\extern\lib\win64\microsoft
添加依賴項有兩種方法:
方法一:項目中設置
項目–項目屬性–配置屬性–鏈接器–輸入–添加依賴項
libmx.lib
libmat.lib
libmex.lib
mclmcr.lib
mclmcrrt.lib
libemlrt.lib
libeng.lib
libfixedpoint.lib
libcovrt.lib
方法二:程序中添加
#pragma comment(lib,“libmx.lib”)
#pragma comment(lib,“libmat.lib”)
#pragma comment(lib,“libmex.lib”)
#pragma comment(lib,“mclmcr.lib”)
#pragma comment(lib,“mclmcrrt.lib”)
#pragma comment(lib,“libemlrt.lib”)
#pragma comment(lib,“libeng.lib”)
#pragma comment(lib,“libfixedpoint.lib”)
#pragma comment(lib,“libcovrt.lib”)
計算機–屬性–高級系統(tǒng)設置–環(huán)境變量–系統(tǒng)變量–Path–新建
D:\MATLAB\R2016a\bin\win64
matlab程序
pt.m文件
clc;clear;close all;
% 定義點(x,y,z)
x = randn(50,1);
xmax = max(x);
xmin = min(x);
y = randn(50,1);
ymax = max(y);
ymin = min(y);
z = exp(sin(x.^2)) + exp(cos(y.^2));
N = 500; % 每個維度的數(shù)據(jù)點數(shù)
% 網(wǎng)格化x,y二維空間
[X,Y] = meshgrid(linspace(xmin,xmax,N),linspace(ymin,ymax,N));
% 采用插值法擴展數(shù)據(jù),可用方法有'linear'(default)|'nearest'|'natural'|'cubic'|'v4'|
Z = griddata(x,y,z,X,Y,'v4');
%% 等高線法
figure('NumberTitle','off','Name','等高線法','Color','w','MenuBar','none','ToolBar','none');
contourf(X,Y,Z,N, 'LineColor','none');
colormap('jet');
colorbar;
axis off;
%{
%% 投影圖法
figure('NumberTitle','off','Name','投影圖法','Color','w','MenuBar','none','ToolBar','none');
surf(X,Y,Z,'LineStyle','none');
xlim([min(X(:)) max(X(:))]);
ylim([min(Y(:)) max(Y(:))]);
axis off;
colormap('jet');
colorbar;
shading interp;
view(0,90);
%% imagesc法
figure('NumberTitle','off','Name','imagesc法','Color','w','MenuBar','none','ToolBar','none');
% 因為圖像坐標和笛卡爾坐標起始位置不一樣,需要上下翻轉
imagesc(flipud(Z));
colormap('jet');
colorbar;
axis off;
%% pcolor法
figure('NumberTitle','off','Name','pcolor法','Color','w','MenuBar','none','ToolBar','none');
pcolor(X,Y,Z);
colormap('jet');
colorbar;
shading interp;
axis off;
%}
VS2012控制臺程序
matlab.cpp文件
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "engine.h"
// 方法一
#pragma comment(lib,"libmx.lib")
#pragma comment(lib,"libmat.lib")
#pragma comment(lib,"libmex.lib")
#pragma comment(lib,"mclmcr.lib")
#pragma comment(lib,"mclmcrrt.lib")
#pragma comment(lib,"libemlrt.lib")
#pragma comment(lib,"libeng.lib")
#pragma comment(lib,"libfixedpoint.lib")
#pragma comment(lib,"libcovrt.lib")
int _tmain(int argc, _TCHAR* argv[])
{
Engine *ep;
if (!(ep = engOpen("\0")))
{
fprintf(stderr, "\nCan't start MATLAB engine\n");
return EXIT_FAILURE;
}
//隱藏matlab命令窗口
engSetVisible(ep, 0);
/*
// 測試
engEvalString(ep, " clc;clear;close all;\
% 定義點(x,y,z)\
x = randn(50,1);\
xmax = max(x);\
xmin = min(x);\
y = randn(50,1);\
ymax = max(y);\
ymin = min(y);\
z = exp(sin(x.^2)) + exp(cos(y.^2));\
N = 500; % 每個維度的數(shù)據(jù)點數(shù)\
% 網(wǎng)格化x,y二維空間\
[X,Y] = meshgrid(linspace(xmin,xmax,N),linspace(ymin,ymax,N));\
% 采用插值法擴展數(shù)據(jù),可用方法有'linear'(default)|'nearest'|'natural'|'cubic'|'v4'|\
Z = griddata(x,y,z,X,Y,'v4');\
figure('NumberTitle','off','Name','等高線法','Color','w','MenuBar','none','ToolBar','none');\
contourf(X,Y,Z,N, 'LineColor','none');\
colormap('jet');\
colorbar;\
axis off;\
");
*/
/*
// 測試
engEvalString(ep, "figure;");
*/
/*
// 切換至 pt.m 所在文件夾
engEvalString(ep, "cd C:\\Users\\Administrator\\Desktop\\matlab\\figure; ");
// 運行 pt.m
engEvalString(ep, "run pt");
*/
engEvalString(ep, "cd C:\\Users\\Administrator\\Desktop\\matlab\\figure;\
run pt;\
");
printf("按任意鍵繼續(xù)\n");
fgetc(stdin);
engEvalString(ep, "close;");
engClose(ep);
return EXIT_SUCCESS;
}
運行結果

說明
VS2012新建名稱為“matlab”項目,在“matlab”項目文件夾下新建figure文件夾,figure文件夾中放matlab畫圖程序 pt.m。
VS2012編譯平臺選擇與matlab版本對應起來,文章選擇的是64位。

到此這篇關于C++調用matlab引擎實現(xiàn)三維圖的繪制的文章就介紹到這了,更多相關C++ matlab繪制三維圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Qt利用QNetwork實現(xiàn)上傳數(shù)據(jù)的示例代碼
這篇文章主要為大家詳細介紹了Qt如何利用QNetwork實現(xiàn)上傳數(shù)據(jù)的 功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-02-02
C++中putchar與getchar函數(shù)的細節(jié)及運用
C語言提供putchar函數(shù),用于給終端輸出一個字符;getchar函數(shù),可以從終端接收用戶輸入的一個字符,本文給大家分享C++中putchar與getchar函數(shù)的細節(jié)及運用,感興趣的朋友跟隨小編一起看看吧2021-07-07
C語言連續(xù)生成隨機數(shù)的實現(xiàn)方法
這篇文章主要介紹了C語言連續(xù)生成隨機數(shù)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
C語言之malloc動態(tài)分配內(nèi)存和free釋放
這篇文章主要介紹了C語言之malloc動態(tài)分配內(nèi)存和free釋放,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
C++實現(xiàn)LeetCode(103.二叉樹的之字形層序遍歷)
這篇文章主要介紹了C++實現(xiàn)LeetCode(103.二叉樹的之字形層序遍歷),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
C++ 類的賦值運算符''''=''''重載的方法實現(xiàn)
這篇文章主要介紹了C++ 類的賦值運算符'='重載的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-02-02

