我正在尝试绘制一个频谱图 - 对于这个问题,它可以被重新表述为我正在尝试绘制一个大矩阵(约40,000 x 3000个双精度实数)。根据我的经验,matlab的
spectrogram
函数的图形输出是最大的问题,自然在设计自己的频谱图脚本时也遇到了同样的问题。使用surface
有时会卡死,需要重新启动计算机。
我已经尝试过:
- 将
'LineStyle','None'
添加到surface
中,确实有所帮助,但不够。 - 将整个问题移至Octave和GNUplot,我认为它们更轻量级。没有特别成功,但我不是gnuplot的专业人士 - 可能有些地方我忽略了。我只尝试了
surface
。 - 未经测试的想法:让matlab/gnuplot不绘制具有挑战性大小的图形,而是将其保存为分辨率极高的图像,以便在某些图像查看器中进行研究(从而绕过重新绘制图形的问题,这是问题的核心)?如果您认为可以,请分享代码。
如果您有任何提示,我将不胜感激。目标是拥有分辨率良好的图形,仍然可以作为频谱图阅读(因此请勿使用mesh
等)。
data=rand(48000,2000)
surface(data,'LineStyle','None','Visible','off')
xlabel('time');
ylabel('frequency');
colorbar('eastoutside');
set(gcf, 'renderer', 'painters');
saveas(gcf,'specgram.pdf');
'renderer','painters'
),而不显示它('Visible','off'
)吗?你能提供一个最小的示例,包括随机数据,以便复制和粘贴吗? - Robert Seifertimagesc
会更加高效。还有Luis Mendo所说的:将你的频谱图缩小到适合屏幕显示的尺寸。 - A. Dondasurf
图一样自定义imagesc
图。 - A. Donda