欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++調(diào)用matlab引擎實(shí)現(xiàn)三維圖的繪制

 更新時(shí)間:2022年12月27日 10:29:24   作者:楊錚...  
這篇文章主要為大家詳細(xì)介紹了C++如何調(diào)用matlab引擎實(shí)現(xiàn)三維圖的繪制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++和Matlab有一定的幫助,需要的可以參考一下

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)文章

最新評(píng)論