对于空间维度,我有一个二维矩阵512 x 512
,如何通过添加一个恒定的时间维度来构建一个三维矩阵?我想在时间方向上使用FFT变换来证明只有DC。
我尝试过以下代码:
data3D(:, :, 1) = data; % data has already load from the above.
im3 = abs(ifft(data3D, [], 3)); % use ifft to the 3rd direction.
imshow(im3); % to show the image from the ifft.
答案 0 :(得分:0)
如果你想让你的第三个维度(时间)保持不变,你需要的就是沿着这个维度repmat
data3D = repmat( data2D, [1, 1, T] ); % create T replicates along time
答案 1 :(得分:0)
为了更通用的目的,您可以将时间向量放在第三维上,例如:
t = linspace(0, 1, 100);
T = reshape(t, [1 1 length(t)];
通常使用bsxfun
进行计算,例如,如果您的空间矩阵A
包含某些谐波分析的相量,请让它随时间演变:
s = real(bsxfun(@times, A, exp(1i*omega*T)));
然后傅立叶沿时间维度对其进行变换
S = fft(s, [], 3);
为了使问题不变于空间维数(2D,3D),我会将所有空间维度沿着一个垂直向量放置,时间维度沿着水平维度放置,并使用2D矩阵执行我的逻辑
A_ = A(:)
t = linspace(0, 1, 100);
s = real(bsxfun(@times, A_, exp(1i*omega*t)))
S = fft(s, [], 2);
您可以随时使用reshape
S_2D = reshape(S, [size(A,1) size(A,2) length(t)]);