trying to create a simple plot. Get error 'Vectors must be the same length'

I am trying to plot a function of time, and its time derivative, in a 3d plot.
This is what I typed
t = [0:0.1:4]
x = exp(-(4-sqrt(3))*t)+exp(-(4+sqrt(3))*t)
v = diff(x)./0.1
plot3(x,v,t);
and I get the error " 'Error using plot3 Vectors must be the same lengths.'"

回答(3 个)

When you take the diff of t it subtracts each element of t from the next element leaving t one element shorter
diff(1:3)
doc diff
To plot with diff typically I zero or nan pad the input to diff or to plot.
plot(x,[v 0],t)
Because when you use diff(), you end up with vector with one less element, so that t and x are one element greater in length than v.
t = [0:0.1:4];
x = exp(-(4-sqrt(3))*t)+exp(-(4+sqrt(3))*t);
v = diff(x)./0.1;
plot3(x(2:end),v,t(2:end));
or do what Sean suggests.
t = [0:0.1:4]
x = exp(-(4-sqrt(3))*t)+exp(-(4+sqrt(3))*t)
v = gradient(x)./0.1
plot3(x,v,t);
%or
t = [0:0.1:4]
x = exp(-(4-sqrt(3))*t)+exp(-(4+sqrt(3))*t)
v = diff(x)./0.1
plot3(x(2:end),v,t(2:end));

类别

帮助中心File Exchange 中查找有关 2-D and 3-D Plots 的更多信息

产品

提问:

2013-11-5

编辑:

2013-11-5

Community Treasure Hunt

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

Start Hunting!

Translated by