如何选择从一个循环一个特定的值对值的范围要绘制?

问题描述 投票:0回答:1

我不认为这样做的正确写法,但我想我已经运行的代码一个循环,将输入X的值到初始状态变量。然后,该变量被输入到热方程被绘制。从代码我想选择一个值,它是在X(I = 51)并画出其作为T(x,T1)。正如我以前说过,我不知道正确的写法寻找可能的解决方案。任何意见将是巨大的!

clear;
clc;
% initialize given variables
A= 0.25;
L= pi;
Nx=101; Nt=10^(-4);
dx=L/(Nx-1);

T1=zeros(1,Nx);
x=linspace(0, L, Nx); %x distance

%Initial condition
%T1 will be the "new" T value and To will be the old
T1= x.*(pi-x);
%For plotting, time starts at 0.
t=0;
for n=1:50
    To=T1;
    t=t+1;
    for i=2:Nx-1
        T1(i)=To(i)+Nt *A*((To(i+1)-2*To(i)+To(i-1))/(dx^2))+ sin(5*x(i));
    end
    %B.C given than @ T(0,t) & T(L,t) = 0
    T1(1)=0; T1(end)=0;
    figure(1)
    plot(x,T1); set(gca, 'ylim',[-110 110]);
    ylabel('Temperature along the Rod');
    xlabel('Location on the Rod of length Pi');
    title(sprintf('Time = %f seconds', t));
    pause(0.001);
end

预期放出来,我想情节plot(x(i=51),T1)这将显示一个图像,就像这样。对于这个情节我跑我的代码,并改变了我对= 50:51,以获得需要的值热传导方程。我想有这种中所示的代码来绘制,而不必重写过我的代码及以上,因为我改变这些值,因为我或时间等... enter image description here获得不同的地块

matlab
1个回答
0
投票

要绘制x的一致的值,具体x(51),为每一位n

这可以通过两种方式

首先,与hold on个别点:

for n = 1:50
    % ... calculation ...
    hold on
    plot( x(51), T1(51), '.' );
    hold off
end

你可以更新的情节,这将是更快地计算和具有显示线图的优点

x_51 = NaN( 50, 1 );
T1_51 = NaN( 50, 1 );
p = plot( [], [] );
for n = 1:50
    % ... calculation ... 
    x_51(n) = x(51);
    T1_51(n) = T1(51);
    set( p, 'XData', x_51, 'YData', T1_51 );
end

推荐问答