matlab中在使用subplot函数画图时,尤其是做emd分解查看IMF时,
正常画图的代码及结果如下:
figure
for i = 1:size(imf_norm,1)
subplot(7,1,i)
plot(imf_norm(i,:))
ylabel('IMF'+string(i))
end
其中imf_norm为分解得到的imfs
效果图:
可以发现有两个基本的需求,
1.不显示前面若干子图的刻度,只保留最后一个子图的刻度
2.子图之间的间距尽量紧凑
第一个需求比较好解决直接使用一行命令就可以实现
set(gca, 'XTickLabel', '')
但是调整子图之间的距离,如果使用subplot就不好调整了
我们可以借助另外一个函数subaxis实现,
很简单,只需要把subplot换成subaxis并把间距传给它就可以
代码如下
figure
space = 0.06;
for i = 1:size(imf_norm,1)
subaxis(7,1,i,'Spacing',space/3)
plot(imf_norm(i,:))
ylabel('IMF'+string(i))
if i ~= size(imf_norm,1)
set(gca, 'XTickLabel', '');
else
xlabel('Sample');
end
xlim([0 200])
end
效果如下:
这样就好看了一些
如果想要给整个图添加一个大标题
可使用sgtitle函数
代码如下
figure
space = 0.06;
for i = 1:size(imf_norm,1)
subaxis(7,1,i,'Spacing',space/3)
plot(imf_norm(i,:))
ylabel('IMF'+string(i))
if i ~= size(imf_norm,1)
set(gca, 'XTickLabel', '');
else
xlabel('Sample');
end
xlim([0 200])
end
sgtitle('大标题')