查看评论,将这些向量堆叠成二维矩阵会更容易。您有 11 个单独命名的向量。假设您的向量被命名为vec1
、vec2
、vec3
等,创建一个二维矩阵A
,将这些向量堆叠在一起。此外,您需要在此矩阵的末尾包含一个额外的行和列,其中包含所有向量的最小值。这样做的原因稍后会很明显,但现在相信我的话,因为这就是你所需要的。
换句话说:
A = [vec1; vec2; vec3; vec4; vec5; vec6; vec7; vec8; ...
vec9; vec10; vec11];
minA = min(A(:));
A = [A minA*ones(11,1); minA*ones(1,51)];
因此,第一行包含时间 0 的信息,下一行包含时间 100 的信息,依此类推,直到时间 1000。
现在我们已经完成了,我们可以使用该pcolor
函数为您绘制这些数据。 pcolor
代表伪彩色棋盘图。您可以通过以下方式调用它:
pcolor(A);
这将采用存储的矩阵A
并生成数据的棋盘图。矩阵中的每个点都被分配了一种颜色。颜色会自动映射,以便将最小值映射到最低颜色,而将最大值映射到最高颜色。 pcolor
不绘制矩阵的最后一行和最后一列,但使用矩阵pcolor
中的所有数据。为了确保正确映射颜色,我们需要填充矩阵,以便将最后一行和最后一列分配给所有向量的最小值。由于您想绘制矩阵中的所有值,这就是我们执行上述操作的原因。
完成此操作后,我们需要修改 X 和 Y 刻度,使其符合您的数据。像这样:
pcolor(A);
set(gca, 'XTick', 0.5:5:51.5);
set(gca, 'XTickLabel', 0:5:50);
set(gca, 'YTick', 1.5:11.5);
set(gca, 'YTickLabel', 0:100:1000);
xlabel('Sample Number');
ylabel('Time');
colorbar;
上面的代码所做的是它生成了一个棋盘模式,就像我们讨论的那样。这在 x 轴上标记样本编号,而时间在 y 轴上。你会看到set
我所做的两个命令,这有点小技巧。默认情况下,y 轴标记从 1 到 12 的刻度。我所做的是我更改了这些标签,以便它们以 100 的步长从 0 变为 1000,并且我还删除了 12 的刻度。此外,我有确保这些标签位于每行的中间。我通过设置YTick
属性来做到这一点,以便我将 0.5 添加到从 1 到 11 的每个值。一旦我这样做了,我就会更改标签,以便它们以 100 为步长从 0 到 1000。我也对x 轴的方式与 y 轴类似。然后我添加一个colorbar
根据您的要求放在一边。
按照上面的代码,并根据您的评论生成介于 13 和 27 之间的随机整数数据:
A = randi([13,27], 11, 50);
minA = min(A(:));
A = [A minA*ones(11,1); minA*ones(1,51)];
我们得到:
显然,颜色条的限制将根据数据的动态范围而变化。我使用randi
并生成了 13 到 27 范围内的随机整数。当您将此代码用于您的目的时,颜色条的范围将根据数据的动态范围而变化,但颜色会相应调整。
祝你好运!