C++調(diào)用matlab引擎實(shí)現(xiàn)三維圖的繪制
VS2012設(shè)置
項(xiàng)目–項(xiàng)目屬性–配置屬性–VC++目錄–包含目錄 D:\MATLAB\R2016a\extern\include
項(xiàng)目–項(xiàng)目屬性–配置屬性–VC++目錄–庫(kù)目錄
D:\MATLAB\R2016a\extern\lib\win64\microsoft
添加依賴項(xiàng)有兩種方法:
方法一:項(xiàng)目中設(shè)置
項(xiàng)目–項(xiàng)目屬性–配置屬性–鏈接器–輸入–添加依賴項(xiàng)
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”)
計(jì)算機(jī)–屬性–高級(jí)系統(tǒng)設(shè)置–環(huán)境變量–系統(tǒng)變量–Path–新建
D:\MATLAB\R2016a\bin\win64
matlab程序
pt.m文件
clc;clear;close all; % 定義點(diǎn)(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; % 每個(gè)維度的數(shù)據(jù)點(diǎn)數(shù) % 網(wǎng)格化x,y二維空間 [X,Y] = meshgrid(linspace(xmin,xmax,N),linspace(ymin,ymax,N)); % 采用插值法擴(kuò)展數(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'); % 因?yàn)閳D像坐標(biāo)和笛卡爾坐標(biāo)起始位置不一樣,需要上下翻轉(zhuǎn) 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控制臺(tái)程序
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); /* // 測(cè)試 engEvalString(ep, " clc;clear;close all;\ % 定義點(diǎn)(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; % 每個(gè)維度的數(shù)據(jù)點(diǎn)數(shù)\ % 網(wǎng)格化x,y二維空間\ [X,Y] = meshgrid(linspace(xmin,xmax,N),linspace(ymin,ymax,N));\ % 采用插值法擴(kuò)展數(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;\ "); */ /* // 測(cè)試 engEvalString(ep, "figure;"); */ /* // 切換至 pt.m 所在文件夾 engEvalString(ep, "cd C:\\Users\\Administrator\\Desktop\\matlab\\figure; "); // 運(yùn)行 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; }
運(yùn)行結(jié)果
說明
VS2012新建名稱為“matlab”項(xiàng)目,在“matlab”項(xiàng)目文件夾下新建figure文件夾,figure文件夾中放matlab畫圖程序 pt.m。
VS2012編譯平臺(tái)選擇與matlab版本對(duì)應(yīng)起來,文章選擇的是64位。
到此這篇關(guān)于C++調(diào)用matlab引擎實(shí)現(xiàn)三維圖的繪制的文章就介紹到這了,更多相關(guān)C++ matlab繪制三維圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
QT使用udp實(shí)現(xiàn)發(fā)送與接收?qǐng)D片
這篇文章主要為大家詳細(xì)介紹了QT如何使用udp協(xié)議實(shí)現(xiàn)發(fā)送與接收?qǐng)D片功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12C++設(shè)計(jì)模式編程中的迭代器模式應(yīng)用解析
這篇文章主要介紹了C++設(shè)計(jì)模式編程中的迭代器模式應(yīng)用解析,迭代器模式注重對(duì)集合中元素的遍歷而不使其暴露,需要的朋友可以參考下2016-03-03Matlab實(shí)現(xiàn)帶豎線散點(diǎn)的核密度圖的繪制
核密度估計(jì)是用于估計(jì)隨機(jī)變量概率密度函數(shù)的一種非參數(shù)方法。核密度圖不失為一種用來觀察連續(xù)型變量分布的有效方法。本文將用Matlab實(shí)現(xiàn)帶豎線散點(diǎn)的核密度圖的繪制,感興趣的可以了解一下2022-08-08C++中g(shù)etline()、gets()等函數(shù)的用法詳解
這篇文章主要介紹了C++中g(shù)etline()、gets()等函數(shù)的用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02C++ 11實(shí)現(xiàn)檢查是否存在特定的成員函數(shù)
C++11/14相比以往的C++98/03在很多方面做了簡(jiǎn)化和增強(qiáng),尤其是在泛型編程方面,讓C++的泛型編程的威力變得更加強(qiáng)大,下面這篇文章主要介紹了利用C++ 11實(shí)現(xiàn)檢查是否存在特定成員函數(shù)的相關(guān)資料,需要的朋友可以參考下。2017-02-02如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果
這篇文章主要給大家介紹了關(guān)于如何為Qt視圖中的文字實(shí)現(xiàn)彩虹漸變效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Qt具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03C++右值引用與移動(dòng)構(gòu)造函數(shù)基礎(chǔ)與應(yīng)用詳解
左值和右值都是針對(duì)表達(dá)式,左值是指表達(dá)式結(jié)束后依然存在的持久對(duì)象,右值是指表達(dá)式結(jié)束時(shí)就不再存在的臨時(shí)對(duì)象,下面這篇文章主要給大家介紹了關(guān)于C++11右值引用和移動(dòng)語(yǔ)義的相關(guān)資料,需要的朋友可以參考下2023-02-02wxWidgets實(shí)現(xiàn)無標(biāo)題欄窗口拖動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了wxWidgets實(shí)現(xiàn)無標(biāo)題欄窗口拖動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02C語(yǔ)言實(shí)現(xiàn)自動(dòng)存取款機(jī)模擬系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)自動(dòng)存取款機(jī)模擬系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05c++將引用或者是指針作為函數(shù)參數(shù)實(shí)現(xiàn)實(shí)參的運(yùn)算
這篇文章主要介紹了c++將引用或者是指針作為函數(shù)參數(shù)實(shí)現(xiàn)實(shí)參的運(yùn)算,需要的朋友可以參考下2014-05-05