我无法让我的代码适用于这个等式:
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');
答案 0 :(得分:2)
之所以如此,是因为您将t
定义为循环变量。 t
只是一个值。你希望plot
最后成为一个数组。
有两种方法可以解决这个问题。
plot
来电更改您的H
调用,使其与阵列输出plot(0:0.01:1, H);
的时间空间相同:
for
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
的方式。
现在应该为您提供正确的图表....我将成为: