function PCB_IFFT()
    % --- 伝送路周波数特性の定義（5ポイント） ---
    freq_points = [0, 2.5, 5, 7.5, 10] * 1e9;  % 周波数 [Hz]
    atten_dB_points = [0, -3, -4.5, -5.5, -7];   % 減衰 [dB]

    % --- FFT設定 ---
    N = 2^14;  % FFTポイント数（2のべき乗必須）
    fs = 40e9; % サンプリング周波数（十分高くする）
    f_axis = (0:N/2) * (fs / N);  % 周波数軸（DC〜Nyquist）

    % --- 周波数特性の補間（線形＋外挿） ---
    atten_dB_interp = interp1(freq_points, atten_dB_points, f_axis, 'linear', 'extrap');
    atten_linear = 10.^(atten_dB_interp / 20);  % dB→線形スケール

    % --- 矩形波スペクトル（180ps立ち上がり時間） ---
    Tr_20_80 = 180e-12;  % 180ps
    Tr_10_90 = 1.4 * Tr_20_80;
    fc = 0.35 / Tr_10_90;  % カットオフ周波数 [Hz]
    V_in = exp(-f_axis / fc);  % RC型低域通過フィルタのスペクトル

    % --- 伝送路減衰を適用 ---
    V_out = V_in .* atten_linear;

    % --- IFFT用の対称スペクトルを正しく作成（必ずN点） ---
    % V_outはN/2+1点 → DC〜Nyquist（奇数点含む）
    V_full = [V_out, fliplr(V_out(2:end-1))];  % 鉄則パターン（N点）

    % --- 時間波形復元（逆FFT） ---
    y_time = real(ifft(V_full));

    % --- 時間軸（必ずN点で作成） ---
    t = (0:N-1) / fs;

    % --- 長さチェック（必須） ---
    fprintf("length(t) = %d\n", length(t));
    fprintf("length(y_time) = %d\n", length(y_time));

    % --- プロット（エラー無しで動作） ---
    plot(t * 1e9, -y_time, 'LineWidth', 1.5);
    xlabel('Time [ns]');
    ylabel('Amplitude');
    title('Distorted Pulse after Transmission Line');
    grid on;
end
