0

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

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

因此,输入 X 的索引从 t(1) 到 t(10)。绘图或图表的输出应该看起来像插入的图像在此处输入图像描述

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

谢谢你。B.Bundit

4

1 回答 1

0

情节非常小,但我认为您想要类似barmatlab 的东西。文档在这里。如果您拥有的向量发生变化,那么您可以创建一个值向量以使用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);

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

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

[widths_sorted,sort_idx]=sort(widths,'ascending');
Xplot_sorted=Xplot(sorted_idx);
means_sorted=means(sorted_idx);
于 2014-04-29T22:02:37.367 回答