找回密码
 注册
Simdroid-非首页
查看: 192|回复: 7

请教:关于二维非规则区域等值云图的matlab实现方法

[复制链接]
发表于 2009-5-1 23:45:45 | 显示全部楼层 |阅读模式 来自 清华大学紫荆公寓
本帖最后由 pblossom 于 2009-5-2 11:08 编辑

比如画一个L型的区域,如下图,我现在想画该区域的温度云图,我尝试分成两块,用两次contourf函数,并画出等值线,其中会有一黑色的分块线,不太好。请问,还有其他方法实现么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2009-5-3 00:59:03 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
先画一个contour图,再叠加一个白的图不行吗?

可能有命令可以直接去黑线,不过没法试。问问题最好把代码也贴上来,有代码顺便就帮你试了。否则,想画一个L型的等值线图也得费一番功夫,而且手头也没有现成的数据。
回复 不支持

使用道具 举报

发表于 2009-5-3 08:33:28 | 显示全部楼层 来自 黑龙江哈尔滨
2# messenger
我试了一下,图形save as后怎么白色区域没有盖住等值线呢?没有保存前是盖住的,不保存直接copy figure到word里白色区域称黑色的了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-5-3 10:57:20 | 显示全部楼层 来自 北京
这样行不行,先画整个区域的云图,然后用白色填充小区域,pcolor。
回复 不支持

使用道具 举报

发表于 2009-5-3 19:27:27 | 显示全部楼层 来自 浙江杭州
你用什么命令画的白色区域没有盖住呀?

2# messenger
我试了一下,图形save as后怎么白色区域没有盖住等值线呢?没有保存前是盖住的,不保存直接copy figure到word里白色区域称黑色的了。
pacoyang 发表于 2009-5-3 08:33
回复 不支持

使用道具 举报

发表于 2009-5-4 08:50:12 | 显示全部楼层 来自 黑龙江哈尔滨
5# messenger
用snagit截图没问题

  1. clear
  2. clc
  3. %
  4. Z = peaks;
  5. [C,h] = contour(Z);
  6. set(h,'Fill','on');
  7. hold on
  8. x=[5 20 20 10 10 5]; y=[5 5 10 10 30 30];
  9. fill(x,y,'w','FaceColor','w','EdgeColor','w');
  10. axis equal; axis off;
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-5-4 16:07:23 | 显示全部楼层 来自 浙江杭州
6# pacoyang

很奇怪的问题,如果用contour画等值图,覆盖后保存,空白图即为黑色。

然而,如果用contourf画等值图,覆盖后保存,空白图即为原色。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-5-7 22:16:11 | 显示全部楼层 来自 河南郑州
本帖最后由 messenger 于 2009-11-15 12:41 编辑

非常感谢,有这么多人帮忙,很有启发。附上matlab代码,大家可以试试

  1. % 二维L型区域有源项导热计算
  2. % 两边第三类边界条件,对称面绝热条件
  3. % aP、b表达式中均乘以完整控制容积,
  4. % 故边界节点源项应乘上其各自非完整度0.25、0.5、0.75
  5. clear;
  6. err=0.0001;
  7. deltay=0.1; deltax=0.1;
  8. dy=0.05; dx=0.05;

  9. M=45; N=30;
  10. lamda=50;

  11. T=zeros(N+3,M+3);
  12. Sc=zeros(N+1,M+1);
  13. Sp=zeros(N+1,M+1);

  14. Spad=-20*deltay/0.01;  % 外边界 第三类 h=20
  15. Scad=20*25*deltay/0.01;  % t=25  deltax=deltay
  16. % Spad=-10^30;  % 外边界 第一类 t=20
  17. % Scad=10^30*20;  

  18. Sc(2:N,1)=Sc(2:N,1)+Scad*ones(N-1,1);
  19. Sp(2:N,1)=Sp(2:N,1)+Spad*ones(N-1,1);
  20. Sc(N+1,2:M)=Sc(N+1,2:M)+Scad*ones(1,M-1);
  21. Sp(N+1,2:M)=Sp(N+1,2:M)+Spad*ones(1,M-1);

  22. Spad=-20*deltax/0.01;  % 内边界 第三类 h=20
  23. Scad=20*200*deltax/0.01;  % t=200 deltax=deltay
  24. % Spad=-10^30;  % 内边界 第一类 t=120
  25. % Scad=10^30*120;  

  26. Sc(2:10,31)=Sc(2:10,31)+Scad*ones(9,1);
  27. Sp(2:10,31)=Sp(2:10,31)+Spad*ones(9,1);
  28. Sc(11,32:M)=Sc(11,32:M)+Scad*ones(1,M-31);
  29. Sp(11,32:M)=Sp(11,32:M)+Spad*ones(1,M-31);

  30. Spad=-20*dx/0.01;
  31. Scad1=20*25*dy/0.01;
  32. Scad2=20*200*dx/0.01;
  33. % Scad1=10^30*20;
  34. % Scad2=10^30*120;

  35. Sc(1,1)=Sc(1,1)+Scad1;
  36. Sp(1,1)=Sp(1,1)+Spad;
  37. Sc(1,31)=Sc(1,31)+Scad2;
  38. Sp(1,31)=Sp(1,31)+Spad;
  39. Sc(11,31)=Sc(11,31)+2*Scad2;
  40. Sp(11,31)=Sp(11,31)+2*Spad;
  41. Sc(11,M+1)=Sc(11,M+1)+Scad2;
  42. Sp(11,M+1)=Sp(11,M+1)+Spad;
  43. Sc(N+1,1)=Sc(N+1,1)+2*Scad1;
  44. Sp(N+1,1)=Sp(N+1,1)+2*Spad;
  45. Sc(N+1,M+1)=Sc(N+1,M+1)+Scad1;
  46. Sp(N+1,M+1)=Sp(N+1,M+1)+Spad;

  47. while 1
  48.     T0=T;
  49.     for i=1:31
  50.         for j=1:31
  51.             if i==1
  52.                 aS=0.0;
  53.             else
  54.                 aS=lamda;
  55.             end
  56.             if j==1
  57.                 aW=0.0;
  58.             else
  59.                 aW=lamda;
  60.             end
  61.             if i==31
  62.                 aN=0.0;
  63.             else
  64.                 aN=lamda;
  65.             end
  66.             if j==31 && i<11
  67.                 aE=0.0;
  68.             else
  69.                 aE=lamda;
  70.             end
  71.             aP=aE+aW+aN+aS-Sp(i,j)*0.01;
  72.             b=Sc(i,j)*0.01;
  73.             T(i+1,j+1)=(aE*T(i+1,j+2)+aW*T(i+1,j)+aN*T(i+2,j+1)+...
  74.                 aS*T(i,j+1)+b)/aP;
  75.         end
  76.     end
  77.     for j=32:M+1
  78.         for i=11:N+1
  79.             if i==11
  80.                 aS=0.0;
  81.             else
  82.                 aS=lamda;
  83.             end
  84.             if i==N+1
  85.                 aN=0.0;
  86.             else
  87.                 aN=lamda;
  88.             end
  89.             if j==M+1
  90.                 aE=0.0;
  91.             else
  92.                 aE=lamda;
  93.             end
  94.             aP=aE+aW+aN+aS-Sp(i,j)*0.01;
  95.             b=Sc(i,j)*0.01;
  96.             T(i+1,j+1)=(aE*T(i+1,j+2)+aW*T(i+1,j)+aN*T(i+2,j+1)+...
  97.                 aS*T(i,j+1)+b)/aP;
  98.         end
  99.     end
  100.     if norm(T-T0,inf) < err
  101.         break
  102.     end
  103. end

  104. clf;
  105. [X,Y]=meshgrid(0:0.1:4.5,0:0.1:3.0);
  106. [C,h,CF]=contourf(X,Y,T(2:N+2,2:M+2));
  107. clabel(C,h)
复制代码


最后需要改动下,我copy错文件了

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-27 20:48 , Processed in 0.047157 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表