Matlab:缩放数据,在单个图形上绘制多个向量

Matlab: Scale data, to plot multiple vectors on a single graph

我想在一个单独的比例图上绘制以下内容。这是我的数据和这些数据的单图:

A = [11 115 167 44 51 5 6];
B = [100 1 1 87];
C = [2000 625];
D = [81 623 45 48 6 14 429 456 94];
E = [89];
F = [44 846 998 2035 498 4 68 4 1 89];

G = {A,B,C,D,E,F};
[max_val, idx] = max(cellfun(@numel, G)); % Find max sizes of vectors

figure(1);plot(1:numel(A),A,'*');
figure(2);plot(1:numel(B),B,'*');
figure(3);plot(1:numel(C),C,'*');
figure(4);plot(1:numel(D),D,'*');
figure(5);plot(1:numel(E),E,'*');
figure(6);plot(1:numel(F),F,'*');

如何使用 max_val 表示 100%,以便将我的 x 轴数据缩放到单个图形中。结果应为单个图形,x 轴为 0 到 100%(因此向量中的第一个值应表示 0%,向量中的最后一个值应表示 100%),y 值不变.

本例中max_val为10,表示向量F。因此,这应该是一个不需要缩放的图表。因此,所有其他图表都应在 x 轴上拉伸(缩放),以绘制在同一图表上。


为了用图片解释,这里是同一张图上所有数据点的常规未缩放图:

这是我想要的近似结果,它是同一张图上所有数据点的比例图(通过手动 excel 篡改实现):

我希望这是清楚的。 感谢所有帮助。

不过,不能 100% 确定我是否理解您想要的内容。但是,如果您只想让单元格中每个字段的 x 轴介于 0 和 100% 之间,我建议您使用 rescale 函数:

A = [11 115 167 44 51 5 6];
B = [100 1 1 87];
C = [2000 625];
D = [81 623 45 48 6 14 429 456 94];
E = [89];
F = [44 846 998 2035 498 4 68 4 1 89];
G = {A,B,C,D,E,F};

xScaled = cellfun(@(x) rescale(1:length(x),0,100),G,'UniformOutput',false);

for i = 1:length(G)
    plot(xScaled{i},G{i},'*')
    hold on
end