众所周知,matlab可以很简单的把数据生成图像,而c#则相对麻烦一些。但如果用c#处理和生成数据文件,利用matlab来调用数据,生成图像则不失为一个很好的思路。我在帮助同学做矿山开采预计可视化系统时就是利用以上思路。具体步骤如下:
打开matlab 建立一个surfplot.m,用于生成塌陷的三维立体图像。代码如下:
function surfplot()
filename='C:/date/xyw.xls';
% 读取x
temp_x=xlsread(filename,'Sheet1','A1:A60501');
[m,n]=size(temp_x);
xx=zeros(1,301);
%xx(1)=temp_x(1);
jj=1;
for i=1:201:m
xx(jj)=temp_x(i);
jj=jj+1;
end
% 读取y
yy=xlsread(filename,'Sheet1','B1:B201');
% 读取z
temp_z=xlsread(filename,'Sheet1','C1:C60501');
[m,n]=size(temp_z);
zz=zeros(201,301);
ii=1; jj=1;
for i=1:1:m
zz(ii,jj)=temp_z(i);
ii=ii+1;
if rem(i,201)==0
ii=1;
jj=jj+1;
end
end
mesh(xx,yy,zz,'LineWidth',10),axis([3000 10000 2000 7000 -800 200]),colorbar;
end
接下来在matlab中输入命令:deploytool。输入名称如:W_3dim.prj Target选择.NET Assembly 。
选择【Add Class】
添加 在class1中添加surfplot.m文件。编译生成surfplot.dll文件
打开vs2008 。添加引用。
分别引用surfplot.dll 和MWArray.dll
命名空间中加入:
using MathWorks.MATLAB.NET.Utility;
using MathWorks.MATLAB.NET.Arrays;
using surfplot
按钮“生成图像”
class1 c=new class1();
c.surfplot();