打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
comsol、matlab、origin协作绘图
最近在用comsol模拟一些简单的cloak模型,它的图形导出功能总是令人不尽满意,为此折腾了一两天,发现下面这种方法或许得到比较比较满意的图形。
1.comsol结果中我们通常需要的是电场或磁场的表面图,这种图形相对来讲比较容易绘制,在很多软件中都可以实现。在默认情况下comsol使用rainbow类型的colortable,而以前使用的origin 8.0只提供有限的几种颜色。值得庆幸的是,在新版的origin 9.0中增加了许多colortable模板,其中就包括rainbow。尽管和comsol中不太一致,但丝毫不影响最终结果的表现。
2.比较难解决的是streamline的绘制问题。在comsol中可以直接添加streamline,并且有多种方式,比如均匀分布或按强度分布,目前还没发现其他软件有这样的功能。目前摸索到这样一种折中的方法,先用matlab生成streamline所需的数据,然后用导出的数据在origin中作图。在Matlab中可以使用stream2命令来生成所需的数据,然后对其进行插值等一些小的数据,就可以直接在origin中实现。不过这种方法需要在matlab中手动给出streamline的起点,这就要求事先对图形的物理结果有一定的了解。如果不想这么麻烦的话,也可以使用箭头矢量图quiver来代替,在origin中可以直接绘制这样的图。
下面是一个简单的程序,仅供参考
clear all
clc
a=load(‘b.dat’);
x0=a(:,1);
y0=a(:,2);
u0=a(:,3);
v0=a(:,4);
[x y]=meshgrid(-1.5:0.01:1.5,-1:0.01:1);
Pu=TriScatteredInterp(x0,y0,u0);
Pv=TriScatteredInterp(x0,y0,v0);
u=Pu(x,y);
v=Pv(x,y);
sx=-1.5*ones(16,1);
sy=linspace(-0.8,0.8,16);
% subplot(2,1,1)
% streamline(x,y,u,v,sx,sy)
% axis([-1 1 -0.5 0.5])
st=stream2(x,y,u,v,sx,sy);
% subplot(2,1,2)
% for ii=1:length(st)
% xy=st{ii};
% plot(xy(:,1),xy(:,2))
% hold on
% end
% axis([-1 1 -0.5 0.5])
x=(-1:0.01:1)’;
y=[];
for ii=1:length(st)
ii
xy=st{ii};
if length(xy(:,1))>2
y=[y interp1(xy(:,1),xy(:,2),x)];
end
end
z=[x y];
save ‘C:\Users\lrj\Desktop\a.dat’ z -ascii
plot(x,y,’b')

文章来源:http://blog.sciencenet.cn/blog-412191-670310.html

原文链接:http://tezhengku.com/topic/?p=642
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
我是研究僧|软件推荐:如何在论文中画出漂亮的插图?
ArcGIS点集之间两两连线
长上影
【技能】搞科研必备这四个软件!
当天收盘为十字星或类十字星的小K线的选股公式
svg transform 坐标变换方式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服