Как выбрать конкретное значение из цикла для построения графика в зависимости от диапазона значений? - PullRequest
0 голосов
/ 05 февраля 2019

Я не могу придумать правильную формулировку для этого, но я пытаюсь, чтобы мой код запустил цикл, который будет вводить значение 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), который показал бы изображение, подобное этому.Для этого графика я запустил свой код и изменил i на = 50: 51, чтобы получить необходимые значения для уравнения теплопроводности.Я пытаюсь сделать так, чтобы это отображалось в показанном коде, и мне не нужно переписывать мой код снова и снова, чтобы получить разные графики, потому что я изменяю значения, такие как i или time ect ... enter image description here

1 Ответ

0 голосов
/ 05 февраля 2019

Вы хотите построить непротиворечивое значение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...