24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2666  |  回复: 8

百里道

木虫 (初入文坛)

[求助] matlab中二维图作图

已经作了温度关于时间和坐标的三维图,怎么做某一具体时刻的温度-位移图?
没有搜到这个,只好求救了。。
回复此楼
==
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jinniu82

铁杆木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与! 2012-03-30 09:54:36
找到具体某一时刻的温度和位移的数据,将其中的一组(温度或位移)作为x轴,另外一组作y轴就可以画出来啦
一碟咸菜一根葱,两只窝头一碗粥
2楼2012-03-30 08:12:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百里道

木虫 (初入文坛)

引用回帖:
2楼: Originally posted by jinniu82 at 2012-03-30 08:12:45:
找到具体某一时刻的温度和位移的数据,将其中的一组(温度或位移)作为x轴,另外一组作y轴就可以画出来啦

三维图是通过网格化x轴和时间轴(100*10的网格),根据迭代公式做出温度分布图的。我的意思是能不能由已经做好的三维图直接抽取某一时刻的二维图,有没有相关的命令或其他模式?
==
3楼2012-03-30 08:50:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jinniu82

铁杆木虫 (正式写手)

【答案】应助回帖


xiegangmai: 金币+1, 谢谢参与! 2012-03-30 12:34:53
图片只是输出的一种方式,把代码中的输出部分的相关数据画出来不就行了,不行的话把代码放上来,研究研究
一碟咸菜一根葱,两只窝头一碗粥
4楼2012-03-30 11:24:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与! 2012-03-30 12:35:01
引用回帖:
3楼: Originally posted by 百里道 at 2012-03-30 08:50:18:
三维图是通过网格化x轴和时间轴(100*10的网格),根据迭代公式做出温度分布图的。我的意思是能不能由已经做好的三维图直接抽取某一时刻的二维图,有没有相关的命令或其他模式?

这个做三维图等高线图就可以了,只不过z轴换成时间就行了
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
5楼2012-03-30 11:27:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百里道

木虫 (初入文坛)

引用回帖:
4楼: Originally posted by jinniu82 at 2012-03-30 11:24:03:
图片只是输出的一种方式,把代码中的输出部分的相关数据画出来不就行了,不行的话把代码放上来,研究研究

function yiweifourier
c=1;
%Phi=10;
Lambda=10;
qw=-10;
%d=Phi/Lambda;
d=@(x)x^2;g=@(t)exp(t);
e=qw/Lambda;
xspan=[0 1];
tspan=[0 0.5];
ngrid=[100 10];
f=@(x)4*x;
[T,x,t]=rechuandao(c,d,e,g,f,xspan,tspan,ngrid);
[x,t]=meshgrid(x,t);
mesh(x,t,T);
xlabel('x')
ylabel('t')
zlabel('T')

function [U,x,t]=rechuandao(c,d,e,g,f,xspan,tspan,ngrid)
n=ngrid(1);
m=ngrid(2);
h=range(xspan)/(m-1);
x=linspace(xspan(1),xspan(2),m);
k=range(tspan)/(n-1);
t=linspace(tspan(1),tspan(2),n);

r=c^2*k/h^2;
if r>0.5
  error('<为了保证算法的收敛,请增大步长h或减小步长k!')
end
s=1-2*r;
s2=e*h;
U=zeros(ngrid);
for i=1:m
  U(1,i)=f(x(i));
end
for j=2:n
  for i=2:m-1
U1(j,i)=d(x(i));U2(j,i)=g(t(j));
    U(j,i)=s*U(j-1,i)+r*(U(j-1,i-1)+U(j-1,i+1))+50*U1(j,i)*U2(j,i);
  end
%%%%%%%下面是边界条件
    U(j,1)=s2+U(j,2);%定热流边界条件
    U(j,m)=U(j,m-1);%绝热边界条件
end
==
6楼2012-04-04 21:04:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jinniu82

铁杆木虫 (正式写手)

【答案】应助回帖

★ ★
臭水沟: 金币+2, 谢谢交流~~ 2012-04-05 14:39:05
mesh(x,t,T)%从此开始添加代码
t=t1*ones(size(t));%t1为具体的时刻值
figure(2)
mesh(x,t,T)%此图应该就是你要的图了吧,想要二维的调一下角度或者用plot画吧
一碟咸菜一根葱,两只窝头一碗粥
7楼2012-04-05 09:25:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百里道

木虫 (初入文坛)

引用回帖:
7楼: Originally posted by jinniu82 at 2012-04-05 09:25:13:
mesh(x,t,T)%从此开始添加代码
t=t1*ones(size(t));%t1为具体的时刻值
figure(2)
mesh(x,t,T)%此图应该就是你要的图了吧,想要二维的调一下角度或者用plot画吧

谢谢!
都可以做出图,不过我想用plot作出其中一个时刻的线(时间确定,用十个不同的x值做一条线),按上面的方法得到的是十条垂直于x轴的线,用plot(x,T,'+',x,T)可以看出每一条垂线上有100个点(对应100个时刻),而我需要的只是其中一个时刻的,请问怎么实现?
十分感谢!
==
8楼2012-04-05 15:23:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百里道

木虫 (初入文坛)

已解决,表示感谢!
==
9楼2012-04-10 08:36:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 百里道 的主题更新
信息提示
请填处理意见