向量的小波分解
wavelet decomposition of a vector
如果我有一个大小为“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级的一维小波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 和三个细节的串联?
任何帮助将不胜感激。
如果我没理解错的话,您希望绘制 3D 数据。您可以使用 scatter3
or plot3
来实现您想要的。
使用 plot3
,执行:
plot(A(:,:,1), A(:,:,2), A(:,:,3), 'b.', 'MarkerSize', 10);
用scatter3
做:
scatter3(A(:,:,1), A(:,:,2), A(:,:,3), 10, 'b');
以上代码以 3D space 大小 10 和蓝色绘制每个点。
对于第二个问题,假设输出也是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');
cat
中的 2
参数水平连接,因此您将 4 个立方体水平拼接在一起,但在第三个维度中仍保持相同数量的维度,然后仅绘制所有他们同时。
如果我有一个大小为“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级的一维小波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 和三个细节的串联?
任何帮助将不胜感激。
如果我没理解错的话,您希望绘制 3D 数据。您可以使用 scatter3
or plot3
来实现您想要的。
使用 plot3
,执行:
plot(A(:,:,1), A(:,:,2), A(:,:,3), 'b.', 'MarkerSize', 10);
用scatter3
做:
scatter3(A(:,:,1), A(:,:,2), A(:,:,3), 10, 'b');
以上代码以 3D space 大小 10 和蓝色绘制每个点。
对于第二个问题,假设输出也是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');
cat
中的 2
参数水平连接,因此您将 4 个立方体水平拼接在一起,但在第三个维度中仍保持相同数量的维度,然后仅绘制所有他们同时。