Keep on getting 'Error using plot, Vectors must be the same length'. How can I plot it correctly?
古いコメントを表示
t(1) = 0; %Time, seconds
T(1) = 0; %Thrust, Newtons
m = 85/1000; % mass, grams
h(1) = 0.2; %Height, meters
A_rocket = 1.2141; %Drag Area, meters^2
c_d = 0.06; %Coefficient of Drag
g = 9.81; %Gravity, meters/second^2
p = 1.225; %Air Density, kilograms/meter^3
v(1) = 0; %Velocity, meters/second
a(1) = 0; %Acceleration, meters/second^2
W = 0.324; %Weight, Newtons
%%
i = 1; %Loop Term
h_check = h(1); %Height Check
t_step = 0.01; %Time Step Intervals
while h_check >= -0.5
%Thrust Function
if t(i) <= 0.22
T(i) = 45.45*(t(i));
elseif t(i) <= 0.27
T(i) = -140*(t(i))+3;
elseif t(i) <= 0.67
T(i) = -2.5*(t(i))+3;
elseif t(i) <= 0.72
T(i) = -40*(t(i))+2;
else T(i) = 0;
break
end
a(i+1)= - m * g + T(i) - c_d * ((p * v(i).^2)/2) * 0.2 / m
v(i + 1) = v(i) + a(i) * t_step
h(i + 1) = h(i) + v(i) * t_step
t(i+1) = t(i)+t_step;
i = i + 1
end
t(end) = [];
h(end) = [];
figure
plot(t,T)
title('Time Vs. Thrust')
xlabel('Time')
ylabel('Thrust')
figure
plot(t,a)
title('Time Vs. Acceleration')
xlabel('Time')
ylabel('Acceleration')
figure
plot(t,v)
title('Time Vs. Velocity')
xlabel('Time')
ylabel('Velocity')
figure
plot(t,h)
title('Time Vs. Height')
xlabel('Time')
ylabel('Height')
2 件のコメント
KSSV
2020 年 12 月 8 日
To plot the x-data and y-data should be of same dimension.
We cannot run your code to check as most of the variables are not defined.
Adam
2020 年 12 月 8 日
Just check that the vectors you are plotting are the same length as each other. It's much easier for you to do that when you have the variables there in your workspace than for us looking at some ill-formatted code on screen. t must be the same length as T, a, v and h.
採用された回答
その他の回答 (1 件)
Steven Lord
2020 年 12 月 8 日
Looking at a portion of your code with other parts cut out:
% snip
while h_check >= -0.5
% snip
a(i+1)= - m * g + T(i) - c_d * ((p * v(i).^2)/2) * 0.2 / m
v(i + 1) = v(i) + a(i) * t_step
h(i + 1) = h(i) + v(i) * t_step
t(i+1) = t(i)+t_step;
% snip
end
At this point, the vectors a, v, h, and t are likely the same length assuming that the lines where you assign to element i+1 of each are actually growing the corresponding vector.
t(end) = [];
h(end) = [];
t and h are now one element shorter than a and v.
% snip
figure
plot(t,a)
% snip the rest of the code
These two vectors are not the same length so MATLAB correctly throws an error.
FYI for the future, one tool that can be useful in debugging this type of error is an error breakpoint. This will cause MATLAB to stop as soon as the error occurs so you can examine the size, type, and contents of the variables being used on the line where the error occurs.
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!