我是MATLAB的新手,我正在努力绘制我的数据。在下面的程序中,我模拟了水位(m.a.s.l)与水箱中捕获的水量之间的关系。现在我需要以H(水位)在Y轴和V(水的体积)在x轴上的方式绘制它。不过我已经阅读了很多并尝试了很多,但仍然无法弄明白。有人可以帮我PLS吗?
我曾尝试使用简单的Plot(X,Y),但它会出错。还有很多其他的建议。我也试过fprintf函数让它在txt中有一个表然后在Excel上绘制它但总是打印最后两个H和V.而不是全部。
for H = 410.03:0.01:414.57
L = 30; v = 0; fun1 = @(x) (0.3.^2-x.^2).^0.5;
if (H<410.03)
%For the heights below the tank, section 0
dis('No Water in the tank')
elseif (H>=410.03 && H<=410.33)
%section (1)
h = .3-(H-410.03) ;
a = (0.3.^2-h.^2).^0.5 ;
A = 2*(integral(fun1,0,a)-h*a);
V = A*L ;
disp(['H= ' num2str(H)])
disp(['V= ' num2str(V)])
elseif (H>410.33 && H<=410.38)
% section (1+2)
h = H-410.33 ;
V1 = L*(2*(integral(fun1,0,0.3)-0));
V = V1+(.6*h+22*h.^2)*L ;
disp(['H= ' num2str(H)])
disp(['V= ' num2str(V)])
elseif (H>410.38 && H<=414.57)
h = H - 410.38;
V1 = L*(2*(integral(fun1,0,0.3)-0));
V2 = V1+(0.085)*L;
V = V2 + (2.8*h)* L ;
disp(['H= ' num2str(H)])
disp(['V= ' num2str(V)])
end
end
答案 0 :(得分:0)
这可能会让你开始,虽然我在这里所做的可能不是最容易理解的第一步。我在你的代码中创建了一个函数H-> V,它可以取一个值为H的向量并返回一个适合绘图的向量V.如果你愿意,你可以创建一个更简单的函数,看起来更像你的原始(使用if-then-else结构)并获取标量H并返回标量V.然后你可以遍历H的范围,创建V步 - 一步。
首先保存这样的函数(调用文件somefunc.m
):
function V = somefunc(H)
% constants
L = 30;
fun1 = @(x) (0.3.^2-x.^2).^0.5;
% set up return value (vector)
V = zeros(size(H));
% Section 1 (pick out the parts of H where it's within the first range)
section1 = find(H>=410.03 & H<=410.33);
h = .3-(H-410.03);
a = (0.3.^2-h.^2).^0.5 ;
% Have to loop here because integral won't take a vector of bounds
for i = section1
A(i) = 2*(integral(fun1,0,a(i))-h(i)*a(i));
end
V(section1) = A(section1)*L ;
% Section 1+2
section_1plus2 = find(H>410.33 & H<=410.38);
h = H-410.33 ;
V1 = L*(2*(integral(fun1,0,0.3)-0)); % scalar
V(section_1plus2) = V1+(.6*h(section_1plus2)+22*h(section_1plus2).^2)*L ;
% Section 3
section3 = find(H>410.38 & H<=414.57);
h = H - 410.38;
V1 = L*(2*(integral(fun1,0,0.3)-0)); % scalar
V2 = V1+(0.085)*L; % scalar
V(section3) = V2 + (2.8*h(section3))* L ;
然后你可以像这样运行它:
H = 410.03 : 0.01 : 414.57;
V = somefunc(H);
plot(H,V);
xlabel('H')
ylabel('V')
我会避免使用类似命名的变量,特别是那些只用大写/小写区分的变量。