フィルターのクリア

plotting step function with variable step length

10 ビュー (過去 30 日間)
sasha
sasha 2014 年 12 月 15 日
コメント済み: sasha 2014 年 12 月 15 日
I want to do a plot of y as a function of time. Where the values of y are either zero or one and they alternate. The time that y is either zero or one is given by t(n) where I solved for t(n) (a vector of different times). Basically I want to have y(t=0 -> t=t(1)) = 0, then y(t=t(1) -> t = t(2)) = 1, then y(t = t(2) -> t(3)) = 0, and so on. I have already solved for a distribution of the t's. I just don't know how to plot this.
  1 件のコメント
Henrik
Henrik 2014 年 12 月 15 日
Your notation is difficult to understand, so I don't know exactly what you're asking.
From what I understood, you could make a vector of the t-values, another vector with the y-values, and plot them using
plot(t,y)
example:
t=[1 2 4 6 7 9];
y=[1 1 -1 0 -1 1];
plot(t,y)

サインインしてコメントする。

回答 (1 件)

Guillaume
Guillaume 2014 年 12 月 15 日
One possible way:
t=[2 7 10 15 20]; %for example
x = [0 reshape(repmat(t(1:end-1), 2, 1), 1, []) t(end)];
y = repmat([1 1 0 0], 1, ceil(numel(x)/4));
y = y(1:numel(x));
plot (x, y)
  1 件のコメント
sasha
sasha 2014 年 12 月 15 日
I actually messed around with it and it appears that defining
n = 1;
n1 = 1;
while n< nmax
x(n+1) = x(n) + t(n);
n = n+1;
end
while n1<nmax/2
t_odd = 2*n1-1;
t_even = 2*n1;
y(t_odd) = 0;
y(t_even) = 1;
n1 = n1+1
end
because t is just the time step, while now x is the absolute time. And should have the first value be at 0 because we start with a zero by the definition of my plot.
And then just using
stairs(x,y)
Gives the correct plot

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDescriptive Statistics and Visualization についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by