从Matlab中保存的值绘制图形

时间:2016-03-24 19:34:46

标签: matlab

我无法让我的代码适用于这个等式:

hb = 0.5 + (qr*t) - [definite integral between t1 and t2 of (qdt)]

我只为hb获取一个值,我该如何保存这些值? (获得头部与时间的关系图。)

更新:我已经为我的for循环添加了一个索引来存储值,但现在我无法绘制结果图。不确定为什么?

% Fluids Project: Power Generation code
clear all;
clc;

R = 15;
Qr = 61.17;
A = 2.47e05;
Tp = 12;
Q = 100;
g = 9.81;
p = 1000;




q = (Q)/((A*R)/(Tp));
qr = (Qr)/((A*R)/(Tp));

t1 = 0.25;
t2 = 0.75;

ii=0;
for t=0:0.01:1
    ii=ii+1;
    tide_height = 0.5*cos(2*pi*t);
    hb= 0.5 + qr*t;

    if t>t1 && t<t2
        hb = hb -  (q*t);
    end

H(ii) = hb - tide_height;

end



plot (t,H);
grid on;
title ('Head Available');
xlabel ('Time');
ylabel ('Head');

1 个答案:

答案 0 :(得分:2)

之所以如此,是因为您将t定义为循环变量。 t只是一个值。你希望plot最后成为一个数组。

有两种方法可以解决这个问题。

方法#1 - 更改plot来电

更改您的H调用,使其与阵列输出plot(0:0.01:1, H); 的时间空间相同:

for

方法#2 - 声明时间数组并更改t循环

您可以将数组for声明为所需的时间步长,然后修改t循环,以便正确访问t = 0:0.01:1; 中的每个元素:

在循环之前,执行以下操作:

for

接下来,在for tt = t 循环中执行:

tt

t现在将成为循环计数器变量。您必须将tt的所有引用更改为t = 0:0.01:1; %// Change for tt = t %// Change ii=ii+1; tide_height = 0.5*cos(2*pi*tt); %// Change hb= 0.5 + qr*tt; %// Change if tt>t1 && tt<t2 %// Change hb = hb - (q*tt); %// Change end H(ii) = hb - tide_height; end ,但是:

plot

如果您决定采用这种方法,则无需更改在代码末尾调用result的方式。

现在应该为您提供正确的图表....我将成为:

enter image description here