Update experiment

This commit is contained in:
Ksyer
2024-07-16 15:41:59 +08:00
parent 363145afe7
commit ce60606d82
@@ -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);