5

質問:不均一な軸上に画像を描くことは可能ですか?

詳細:

多次元時系列を画像として説明する必要があります。しかし、この時系列のタイムグリッドは非常に不均一です。次に例を示します。

m = 10;
n = 3;
t = sort(rand(m, 1));  % non-uniform time
values = randn(m, n);  % some random values

figure, plot(t, values);ハンドルはそれをうまく処理します 。

しかし、ドキュメントとの間で、およびドキュメントに従って、均一な時間にimagesc()変換されます。tt(1)t(end)

imagesc(x、y、C)は、Cを画像として表示し、ベクトルxとyを使用してx軸とy軸の境界を指定します。

したがって、コマンド:

figure, imagesc(t, 1 : n, values'); colorbar;

は、均一なタイムグリッド上の画像を示しています。

ここに画像の説明を入力してください ここに画像の説明を入力してください

編集:より均一な解像度で時系列を再サンプリングすることが可能です。しかし、私の時系列はすでに非常に大きいです。

4

3 に答える 3

5

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;
于 2013-12-11T13:10:58.527 に答える
4

ファイル交換からuimagescを試してください。

ここに画像の説明を入力してください

于 2012-12-21T02:40:26.547 に答える
2

解決

surface不均一な間隔に使用してみてください。

まず、入力データと同じサイズの3Dxyzサーフェスを作成します。

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));

次に、値をカラーマップします。mathworksファイル交換に投稿された素晴らしいツールreal2rgbがあり、これを実行できます。

cdata = real2rgb(values);  % Where size(cdata) = [m n 3]

最後に、サーフェスをプロットします。あなたも空想を得て、透明度を設定することができます。

surface(x,y,z,cdata,'EdgeColor','none','FaceColor','texturemap',...
  'CDataMapping','direct');
alpha(0.3)

ここに画像の説明を入力してください

于 2012-12-20T23:46:17.707 に答える