Ser*_*erg 5 matlab time-series image-processing
问题:是否可以在非均匀轴上显示图像?
细节:
我需要将多维时间序列说明为图像.但是这个时间序列的时间网格是非常不均匀的.这是一个例子:
m = 10;
n = 3;
t = sort(rand(m, 1)); % non-uniform time
values = randn(m, n); % some random values
Run Code Online (Sandbox Code Playgroud)
该figure, plot(t, values);井处理它.
但imagesc()转换t成之间的均匀时间t(1)和t(end)根据文档:
imagesc(x,y,C)将C显示为图像,并使用向量x和y指定x轴和y轴的边界.
因此,命令:
figure, imagesc(t, 1 : n, values'); colorbar;
Run Code Online (Sandbox Code Playgroud)
说明统一时间网格上的图像.

编辑:可以重新采样具有更高均匀分辨率的时间序列.但我的时间序列已经很大了.
MATLAB中有pcolor函数.这个功能完全符合您的要求.
m = 10;
n = 3;
t = sort(rand(m, 1)); % non-uniform time
values = randn(m, n); % some random values
figure
plot(t, values);
figure
pcolor(t, 1 : n, values');
colorbar;
Run Code Online (Sandbox Code Playgroud)
解决方案
尝试使用surface非均匀间距。
首先,创建与输入数据大小相同的 3D xyz 曲面:
m = 10;
n = 3;
t = sort(rand(m, 1)); % non-uniform time
values = randn(m, n); % some random values
x = repmat(t,1,n);
y = repmat(1:n,m,1);
z = zeros(size(y));
Run Code Online (Sandbox Code Playgroud)
然后,对您的值进行颜色映射。mathworks 文件交换中发布了一个很好的工具real2rgb,可以为您执行此操作:
cdata = real2rgb(values); % Where size(cdata) = [m n 3]
Run Code Online (Sandbox Code Playgroud)
最后,绘制曲面。您甚至可以随意设置透明度。
surface(x,y,z,cdata,'EdgeColor','none','FaceColor','texturemap',...
'CDataMapping','direct');
alpha(0.3)
Run Code Online (Sandbox Code Playgroud)
