我想将一系列矩形脉冲绘制到矢量数据输入中。绘图轮廓将为正数创建脉冲的上升沿,并为该数的负数创建下降沿。该图应为每个表示的数字分开颜色。
例如,如果向量输入 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
情节非常小,但我认为您想要类似bar
matlab 的东西。文档在这里。如果您拥有的向量发生变化,那么您可以创建一个值向量以使用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);