Why does my plot not display the 50 values of t_operation?

1 次查看(过去 30 天)
I want to plot t_operation for 100<x<150. I tried this code, but it does not work. I do not understand why.
clear all; close all; clc;
hold on
v_tank = 40;
v_trailertank = 80;
v_trailer = 100;
t_loading = 1/12;
t_unloading = 1/12;
L = 400;
for x = 100 : 150
t_tank1(x)=(t_loading+(x/v_trailertank)+t_unloading)+((L-x)/v_tank);
t_tank2(x)=(t_loading+(x/v_trailertank)+t_unloading)+x/v_trailer+(t_loading+L/(v_trailertank)+t_unloading);
t_operation(x)=max(t_tank1(x),t_tank2(x));
end
plot(x,t_operation)
Please help.

采纳的回答

the cyclist
the cyclist 2019-9-27
编辑:the cyclist 2019-9-27
The reason is that when you reach that plotting statement, x is simply the last value of your loop. Try this:
xrange = 100:150;
plot(xrange,t_operation(xrange))
FYI, you can write that code in vectorized fashion, without using the for loop at all:
xrange = 100 : 150;
t_tank1(x)=(t_loading+(x/v_trailertank)+t_unloading)+((L-x)/v_tank);
t_tank2(x)=(t_loading+(x/v_trailertank)+t_unloading)+x/v_trailer+(t_loading+L/(v_trailertank)+t_unloading);
t_operation(x)=max(t_tank1(x),t_tank2(x));
plot(xrange,t_operation(xrange))
  5 个评论
Mike Mierlo van
Mike Mierlo van 2019-9-27
Never mind: I already found it out. It works with: X_min=find(t_operation(x)==t_operationmin)
the cyclist
the cyclist 2019-9-27
You can do the same thing more efficiently with
[t_operationmin, x_min_index] = min(t_operation(x))
But be careful. The find command will tell you which element (e.g. the "5th element in the vector"), not the actual value of x that that corresponds to. I think you'll need x(x_min_index) for that. For example, in your case, the 5th element of x would be the value x=100004.
As Steven pointed out, you are using x in an odd way, as both an index and a variable. So you need to be careful.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Line Plots 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by