要求绘制具有受控上升/下降沿的矩形脉冲

时间:2014-04-12 14:11:33

标签: matlab plot pulse

我想将一系列矩形脉冲绘制成矢量数据输入。绘图轮廓将为正数创建脉冲的上升沿,并为该数字的负数创建下降沿。该图应为每个代表的数字分开颜色。

例如,如果矢量输入X是[1 -1 2 -2 3 4 1 -4 -1 -3] 数据'1'的幅度为5, 数据'2'的幅度为4, 数据'3'的幅度为3和 数据'4'的幅度为2

因此,输入X得到从t(1)到t(10)的索引。绘图或图表的输出应该与插入的图像enter image description here

类似

我如何为这项工作编写MATLAB代码?

谢谢。 B.Bundit

1 个答案:

答案 0 :(得分:0)

情节非常小但我认为你想在matlab中使用bar之类的东西。文档为here。如果您拥有的矢量发生了变化,那么您可以使用cumsum创建用于绘图的值向量。

X=[1 -1 2 -2 3 4 1 -4 -1 -3];
Xplot=cumsum([5,X(2:end)]); % //so 5 will be your initial value

由于上面给出的绘图具有不同的条形宽度,因此您还需要每个数据点的中心向量和每个数据点的宽度。

means= [1 2 3 4 5 6 7 8 9 10];
widths=[1 1 1 1 1 1 1 2 1 1];

对于不同颜色条形图,您可以这样做:

colors=['r','g','k','b','c','m','y','r','g','k'];
for i=1:length(X)
    h=bar(means(i),Xplot(i),widths(i));
    if i==1, hold on; end
    set(h,'FaceColor',colors(i));
end
% //This will label each bar, or you could define your axes before the loop
set(gca,'XTickLabel',means);

您可以探索其他属性来设置here。类bareries没有FaceAlpha属性,因此我不确定您是否可以使它们透明。但是,您可以将FaceColor设置为无,并将EdgeColor设置为您选择的颜色。请注意,边缘颜色由RGB三元组指定,而不是字母代码。

您可能还需要按宽度求助您的数据,以便最后绘制最宽的条形图,从而位于顶部。这看起来像这样:

[widths_sorted,sort_idx]=sort(widths,'ascending');
Xplot_sorted=Xplot(sorted_idx);
means_sorted=means(sorted_idx);