我有一个包含1000个值的矢量数据,例如
data=[1,2,...1000]
我可以使用绘图在图形中绘制整个数据。但是,它太大了。因此,我缩放它以便仅通过此代码获取索引1,5,10 .... 1000的值
index=0;
for I=1:5:1000
index=index+1;
data_scale(index)=data(i);
end
plot(1:length(data_scale),data_scale);
我的问题是x轴不会显示从1到1000的实际值。它只显示1到200(因为1000:5)。我想显示x轴,例如1:50:1000,
y_axis=[data(1), data(5),data(10)]
Corresponding to
x_axis=[1 50 100 ]
我怎样才能在matlab中做到这一点? 这是我目前的代码
index=0;
labels=[];
data_scale(1)=data(1)
for i=1:1:1000
if(rem(i,5)==0)
index=index+1;
data_scale(index)=data(i);
if(rem(i,50)==0)
labels=[labels i];
end
end
end
plot(1:length(data_scale),data_scale);
set(gca, 'XTick', 1:length(labels),'FontSize', 12); % Change x-axis ticks
set(gca, 'XTickLabel', labels); % Change x-axis ticks labels.
答案 0 :(得分:2)
没问题。只需将您的情节线更改为:
plot(1:5:length(data_scale),data_scale);
这样你就可以告诉它二次抽样指数了。如果你想让它成为x值,也没必要告诉Matlab XTickLabel,所以将最后两行更改为:
set(gca, 'XTick', labels,'FontSize', 12); % Change x-axis ticks
虽然有一种更简单的子采样方式:
% SUBSAMPLE This is probably all you need
x = 1:5:length(data); % The indices you want to use
data_scale = data(x); % The subsampled data (this is called slicing)
plot(x, data_scale); % Plot
% OPTIONAL If you want to control the label positions manually
labels = 1:50:length(data); % The labels you want to see
set(gca, 'XTick', labels, 'FontSize', 12); % Optionally specify label position