2015-11-18 102 views
1

显示在x轴上的刻度值I有一个包含1000个值如我怎样才能在MATLAB

data=[1,2,...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,5,10 .... 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. 

回答

2

没问题。只需将您的剧情线改为:

plot(1:5:length(data_scale),data_scale); 

以便您告诉它二次采样索引。它也没有必要告诉MATLAB的XTickLabel如果你希望它是x值,所以最后两行更改为:

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 
+0

谢谢kmac为你提供帮助。 –