Спецификация линии функции графика - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь построить график, используя прямую линию в MATLAB;однако я могу печатать его только с помощью кружков.

Я пытался изменить «ro-» на «r-» и другие различные решения, но ничего не получалось.При использовании «r-» ничего не печатается.

Это мой код:

for T = temp
  figure(i)
  for xb = linspace (0,1,10)
    xt = 1-xb;
    Pb = 10^(6.89272 - (1203.531/(T+219.888)));
    Pt = 10^(6.95805 - (1346.773/(T+219.693)));
    Ptot = Pb*xb + Pt*xt;
    yb = (Pb*xb)/Ptot;
    plot(xb, Ptot, 'bo-.')
    hold on
    plot(yb, Ptot, 'ro-')
  end
  i = i + 1;
  saveas(gcf, filename, 'png')
end

Вот что я получаю:

enter image description here

Это то, что я хочу:

enter image description here

Как мне сделать этот график с линиями?

1 Ответ

0 голосов
/ 02 октября 2018

Чтобы построить линию, команда plot должна получить все точки вдоль линии за один вызов функции.Повторные вызовы plot добавят новые линии к фигуре, и в этом случае каждая линия состоит из одной точки.Короче говоря, MATLAB не знает, что вы хотите соединить эти точки.

Так как же получить все точки данных в одном массиве?Просто сохраните их в цикле:

T = 70;
xb = linspace(0,1,10);
Plot = zeros(size(xb)); % preallocate output array
yb = zeros(size(xb));   % preallocate output array
for ii=1:numel(xb)
  xt = 1-xb(ii);
  Pb = 10^(6.89272 - (1203.531/(T+219.888)));
  Pt = 10^(6.95805 - (1346.773/(T+219.693)));
  Ptot(ii) = Pb*xb(ii) + Pt*xt;
  yb(ii) = (Pb*xb(ii))/Ptot(ii);
end
figure
plot(xb, Ptot, 'b-')
hold on
plot(yb, Ptot, 'r--')

Но на самом деле это проще сделать без цикла:

T = 70;
xb = linspace(0,1,10);
xt = 1-xb;
Pb = 10^(6.89272 - (1203.531/(T+219.888)));
Pt = 10^(6.95805 - (1346.773/(T+219.693)));
Ptot = Pb*xb + Pt*xt;
yb = (Pb*xb)./Ptot;    % note ./ is the element-wise division
figure
plot(xb, Ptot, 'b-')
hold on
plot(yb, Ptot, 'r--')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...