0

如果我有一个大小为“ m x n x p”的高光谱数据立方体,其中m是行大小,n代表列大小,p而是波段总数。

让我们用A表示高光谱数据立方体。在这种情况下, A 的每个像素对应一个大小为 的向量p x 1

好的,从A绘制一个像素,我们可以这样做:

specific_pixel = squeeze(A(x,y,:)); % Extracting a pixel located in the position x and y of A
plot(specific_pixel), ylabel('The specific pixel');

我有两个问题:

1)我知道如何像上面一样分别绘制每个像素,但是我如何同时创建所有像素的图?例如,如果我们有一个 2D 图像,我们可以简单地写 plot(image)。但是对于数据立方体,我们怎么能做到这一点呢?

2)如果我将 3 个级别的 1D 小波 haar 应用于上面的特定像素:

[c,s] = wavedec(A, 3, 'haar');
approxi = appcoef(c, s, 'haar', 3);
details3 = detcoef(c, s, 3);
details2 = detcoef(c, s, 2);
details1 = detcoef(c, s, 1);

如何绘制 approxi 和三个细节的串联?

任何帮助将不胜感激。

4

1 回答 1

1

如果我理解正确,您希望绘制 3D 数据。您可以使用scatter3plot3实现您想要的。

plot3,做:

plot(A(:,:,1), A(:,:,2), A(:,:,3), 'b.', 'MarkerSize', 10);

scatter3

scatter3(A(:,:,1), A(:,:,2), A(:,:,3), 10, 'b');

上面的代码以 10 大小和蓝色绘制 3D 空间中的每个点。

对于第二个问题,假设输出也是 3D,可以用水平连接立方体cat,然后重复上面的代码。

像这样的东西:

out = cat(2, approxi, details1, details2, details3);

plot(out(:,:,1), out(:,:,2), out(:,:,3), 'b.', 'MarkerSize', 10);
%// or
%// scatter3(out(:,:,1), out(:,:,2), out(:,:,3), 10, 'b');

中的2参数cat水平连接,因此您将水平拼接 4 个立方体,但仍然在第三维中保持相同数量的维度,然后同时绘制所有它们。

于 2015-05-13T16:04:08.827 回答