我想将一系列矩形脉冲绘制成矢量数据输入。绘图轮廓将为正数创建脉冲的上升沿,并为该数字的负数创建下降沿。该图应为每个代表的数字分开颜色。
例如,如果矢量输入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
答案 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);