Update experiment
This commit is contained in:
@@ -4,22 +4,24 @@ clear;
|
|||||||
|
|
||||||
N = 100;
|
N = 100;
|
||||||
eps = 1e-10;
|
eps = 1e-10;
|
||||||
|
|
||||||
|
% 生成傅里叶矩阵
|
||||||
F_n = dftmtx(N);
|
F_n = dftmtx(N);
|
||||||
|
|
||||||
|
% 输出傅里叶矩阵
|
||||||
for i = 1: N
|
for i = 1: N
|
||||||
for j = 1: N
|
for j = 1: N
|
||||||
fprintf(string(F_n(i, j)) + ", ");
|
fprintf(string(F_n(i, j)) + ", ");
|
||||||
end
|
end
|
||||||
fprintf("\b\b\n");
|
fprintf("\b\b\n");
|
||||||
end
|
end
|
||||||
|
|
||||||
fprintf("\n");
|
fprintf("\n");
|
||||||
|
|
||||||
% 检查傅里叶矩阵的正确性
|
% 检查傅里叶矩阵
|
||||||
assert(abs(F_n(2, 2) ^ 2 - F_n(2, 3)) < eps);
|
assert(abs(F_n(2, 2) ^ 2 - F_n(2, 3)) < eps);
|
||||||
assert(abs(F_n(2, 2) ^ N - 1) < eps);
|
assert(abs(F_n(2, 2) ^ N - 1) < eps);
|
||||||
|
|
||||||
%% 检查循环卷积
|
%% 循环卷积
|
||||||
x = randn(N, 1);
|
x = randn(N, 1);
|
||||||
z = randn(N, 1);
|
z = randn(N, 1);
|
||||||
p = cconv(x, z, N);
|
p = cconv(x, z, N);
|
||||||
@@ -33,11 +35,11 @@ for i = 1: N
|
|||||||
assert(abs(tmp - p(i)) < eps);
|
assert(abs(tmp - p(i)) < eps);
|
||||||
end
|
end
|
||||||
|
|
||||||
% 检查 x * z = A(x)z 的正确性
|
% 检查 x * z = A(x)z
|
||||||
A_x = toeplitz([x(1) fliplr(x(2:end)')], x);
|
A_x = toeplitz([x(1) fliplr(x(2:end)')], x);
|
||||||
assert(is_vector_equal(p, A_x' * z, eps));
|
assert(is_vector_equal(p, A_x' * z, eps));
|
||||||
|
|
||||||
% 检查卷积定理的正确性
|
% 检查卷积定理
|
||||||
x_hat = fft(x);
|
x_hat = fft(x);
|
||||||
z_hat = fft(z);
|
z_hat = fft(z);
|
||||||
xz_hat = fft(p);
|
xz_hat = fft(p);
|
||||||
|
|||||||
Reference in New Issue
Block a user