পাঠ ২৩ · ৫৭-এর মধ্যে · মডিউল ৫
Home / Courses / Digital Signal Processing / ফ্রিকোয়েন্সি-ডোমেইন অ্যানালাইসিস

DFT-এর বৈশিষ্ট্য — সিমেট্রি, পিরিয়ডিসিটি, লিকেজ

DFT properties — symmetry, periodicity, leakage
১০ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • কনজুগেট সিমেট্রির গাণিতিক ভিত্তি এবং বাস্তব সিগন্যালের জন্য কেন এটি সত্য
  • DFT-এর $N$-পিরিয়ডিসিটি এবং এর ব্যবহারিক তাৎপর্য
  • Python কোডে উভয় বৈশিষ্ট্য সংখ্যাগতভাবে (ছোট tolerance-সহ) যাচাই করা
  • স্পেকট্রাল লিকেজের ধারণা এবং এটি কেন অ-পূর্ণসংখ্যা বিন-ফ্রিকোয়েন্সিতে ঘটে

১ · কনজুগেট সিমেট্রি

যদি ইনপুট সিগন্যাল $x[n]$ বাস্তব-মূল্যবান হয় (কোনো ইমাজিনারি অংশ নেই, যা এই কোর্সের বেশিরভাগ ব্যবহারিক সিগন্যালের ক্ষেত্রে সত্য), তাহলে এর DFT-তে একটি বিশেষ বৈশিষ্ট্য থাকে — কনজুগেট সিমেট্রিConjugate Symmetryএকটি বাস্তব-মূল্যবান সিগন্যালের DFT-তে X[N-k] সবসময় X[k]-এর কমপ্লেক্স কনজুগেটের সমান হয়।:

$$X[N-k] = \overline{X[k]} \qquad \text{(যেখানে } \overline{(\cdot)} \text{ কমপ্লেক্স কনজুগেট)}$$

সহজ কথায়: ম্যাগনিটিউড $|X[N-k]| = |X[k]|$ (আয়না-প্রতিফলিত, সমান) কিন্তু ফেজ উল্টো চিহ্নের ($\angle X[N-k] = -\angle X[k]$)। এর মানে একটি $N$-পয়েন্ট DFT-তে $k=1$ থেকে $k=N/2$ পর্যন্ত (তথাকথিত "positive frequencies") তথ্যই সম্পূর্ণ সিগন্যাল বর্ণনা করতে যথেষ্ট — $k=N/2+1$ থেকে $N-1$ পর্যন্ত শুধু পুনরাবৃত্তি।

২ · পিরিয়ডিসিটি

DFT সূত্রে $e^{-j2\pi kn/N}$ পদটি $k$-তে $N$-পিরিয়ডে পর্যায়বৃত্ত (ঠিক L২০-এ দেখা DTFT-এর $2\pi$-পিরিয়ডিসিটির মতোই যুক্তি, শুধু ডিসক্রিটাইজড রূপে):

$$X[k] = X[k+N] \quad \text{সব পূর্ণসংখ্যা } k \text{-এর জন্য}$$

এর মানে, আমরা সূত্রে $k=N$, $k=N+1$ ইত্যাদি বসিয়ে "সম্প্রসারিত" মান গণনা করলেও, ফলাফল $k=0$, $k=1$ ইত্যাদির মতোই হবে — DFT-এর আউটপুট একটি অসীম-দৈর্ঘ্যের পর্যায়বৃত্ত ক্রম হিসেবেও ভাবা যায়, যদিও আমরা শুধু একটি পিরিয়ড ($k=0$ থেকে $N-1$) সংরক্ষণ করি।

সিমেট্রির সাশ্রয়
বাস্তব সিগন্যালের জন্য শুধু অর্ধেক DFT আউটপুট গণনা/সংরক্ষণ করলেই যথেষ্ট — এটি বহু বাস্তব FFT লাইব্রেরির (যেমন rfft) ভিত্তি।
পিরিয়ডিক ধারণা
DFT-কে সবসময় একটি অসীম পর্যায়বৃত্ত সিগন্যালের একটি পিরিয়ড হিসেবে ভাবা উচিত — এটি M৯-এর মাল্টিরেট প্রসেসিং ও M৬-এর FFT বাটারফ্লাই স্ট্রাকচার বোঝার জন্য গুরুত্বপূর্ণ।
স্পেকট্রাল লিকেজ
যদি সিগন্যালের ফ্রিকোয়েন্সি ঠিক কোনো বিনে না পড়ে, শক্তি একাধিক বিনে "ছড়িয়ে" যায় — L২২-এর প্র০২-এ প্রথম দেখা, L২৪-এ সম্পূর্ণ ডেমো।

৩ · একটি সত্যিকারের সংখ্যাগত যাচাই

নিচের কোডে একটি ৮-স্যাম্পলের এলোমেলো বাস্তব সিগন্যালের DFT নিয়ে উভয় বৈশিষ্ট্য যাচাই করা হয়েছে — কনজুগেট সিমেট্রি ($X[N-k]$ বনাম $\overline{X[k]}$) এবং পিরিয়ডিসিটি (সূত্র $k$-তে সরাসরি বসিয়ে $X[k]$ বনাম $X[k+N]$)।

Python
import cmath, math

N = 8
x = [0.5, 1.0, 1.5, 0.2, -0.3, 0.8, 1.1, -0.6]  # বাস্তব-মূল্যবান টেস্ট সিগন্যাল

def dft_term(x, k):
    N = len(x)
    return sum(x[n] * cmath.exp(-2j * math.pi * k * n / N) for n in range(N))

X = [dft_term(x, k) for k in range(N)]

print("কনজুগেট সিমেট্রি: X[N-k] বনাম conj(X[k])  (k=1..N-1)")
print(f"{'k':>2} | {'|diff|':>10}")
max_sym_diff = 0.0
for k in range(1, N):
    diff = abs(X[N - k] - X[k].conjugate())
    max_sym_diff = max(max_sym_diff, diff)
    print(f"{k:2d} | {diff:10.2e}")
print(f"সর্বোচ্চ সিমেট্রি পার্থক্য = {max_sym_diff:.2e}")

print()
print("পিরিয়ডিসিটি: সূত্র থেকে সরাসরি X[k] বনাম X[k+N]  (k সম্প্রসারিত)")
max_per_diff = 0.0
for k in [0, 1, 3, 5, 7]:
    Xk = dft_term(x, k)
    XkN = dft_term(x, k + N)
    diff = abs(Xk - XkN)
    max_per_diff = max(max_per_diff, diff)
    print(f"k={k}: |X[k]-X[k+N]| = {diff:.2e}")
print(f"সর্বোচ্চ পিরিয়ডিসিটি পার্থক্য = {max_per_diff:.2e}")

    
উভয় যাচাইয়ে পার্থক্য ফ্লোটিং-পয়েন্ট নির্ভুলতার সীমায় — সর্বোচ্চ সিমেট্রি পার্থক্য প্রায় $4.40 \times 10^{-15}$ আর সর্বোচ্চ পিরিয়ডিসিটি পার্থক্য প্রায় $1.18 \times 10^{-14}$ — অর্থাৎ বাস্তবে শূন্য, শুধু কমপিউটারের সসীম-নির্ভুলতার সংখ্যাগত ত্রুটি। এটি সংখ্যাগতভাবে নিশ্চিত করে যে $X[N-k]=\overline{X[k]}$ আর $X[k]=X[k+N]$ — এই দুই বৈশিষ্ট্য শুধু তাত্ত্বিক দাবি নয়, প্রতিটি DFT-তেই প্রকৃতপক্ষে সত্য।
মূল কথা · Key takeaway

কনজুগেট সিমেট্রি ও পিরিয়ডিসিটি — দুটোই DFT সূত্রের গাণিতিক গঠন থেকে সরাসরি আসে, কোনো অতিরিক্ত অনুমান দরকার নেই। এই বৈশিষ্ট্যগুলো শুধু তাত্ত্বিক কৌতূহল নয় — M৬-এর FFT অ্যালগরিদম সরাসরি পিরিয়ডিসিটি ও সিমেট্রি ব্যবহার করে গণনা কমায়, আর L২৪-L২৫-এ আমরা লিকেজ ও রেজোলিউশনের প্রশ্নে ফিরে যাব — যা এই পাঠের সিমেট্রির মতোই DFT-এর একটি অন্তর্নিহিত (এড়ানো যায় না এমন) বৈশিষ্ট্য।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ উপরের কোডে $N=8$, তাই $k=4$-এর জন্য $X[N-k] = X[4]$ — অর্থাৎ নিজের সাথে তুলনা। এর মানে $X[4]$ সম্পর্কে কী বলা যায়?

$k=N/2=4$-এ সিমেট্রি সূত্র হয়ে যায় $X[4] = \overline{X[4]}$ — অর্থাৎ $X[4]$ নিজের কনজুগেটের সমান। একটি সংখ্যা তখনই নিজের কনজুগেটের সমান হয় যখন তার ইমাজিনারি অংশ শূন্য — তাই $X[N/2]$ (যদি $N$ জোড় হয়) সবসময় বাস্তব-মূল্যবান হয়, ঠিক যেমন L২০-এ $X(e^{j\pi})$ বাস্তব-মূল্যবান পাওয়া গিয়েছিল একই কারণে ($k=N/2 \Leftrightarrow \omega=\pi$)।

প্র ০২ কনজুগেট সিমেট্রি কি জটিল-মূল্যবান (কমপ্লেক্স) ইনপুট সিগন্যালের জন্যও প্রযোজ্য?

না। উপরের প্রমাণ নির্ভর করে $x[n]$ বাস্তব হওয়ার উপর — শুধুমাত্র তখনই $\overline{X[k]} = \sum_n x[n] e^{+j2\pi kn/N} = \sum_n x[n] e^{-j2\pi(-k)n/N} = X[-k] = X[N-k]$ (পিরিয়ডিসিটি ব্যবহার করে) প্রমাণ হয়। এই কোর্সে অধিকাংশ সিগন্যাল বাস্তব হলেও, M৬-এর FFT বাটারফ্লাই গণনার মধ্যবর্তী ধাপগুলো প্রায়ই কমপ্লেক্স-মূল্যবান হয়, যেখানে এই সিমেট্রি সাধারণভাবে থাকে না।

প্র ০৩ স্পেকট্রাল লিকেজ ঠিক কখন ঘটে, আর L২২-এর ডেমোতে (যেখানে $8$ Hz আর $20$ Hz উভয়ই পরিষ্কার একক বিনে পড়েছিল) কেন লিকেজ দেখা যায়নি?

লিকেজ ঘটে যখন সিগন্যালের প্রকৃত ফ্রিকোয়েন্সি DFT-এর বিন-গ্রিডের ঠিক উপরে না পড়ে — অর্থাৎ $k = f \cdot N/f_s$ একটি পূর্ণসংখ্যা না হলে। L২২-এর ডেমোতে $8$ Hz ও $20$ Hz উভয়ই $f_s/N=2$ Hz-এর পূর্ণ গুণিতক ছিল ($k=4$ ও $k=10$, উভয়ই পূর্ণসংখ্যা), তাই কোনো লিকেজ হয়নি — এটি একটি বিশেষভাবে "পরিষ্কার" উদাহরণ ছিল। L২৪-এ একটি অ-পূর্ণসংখ্যা-বিন ফ্রিকোয়েন্সি দিয়ে লিকেজ সত্যিকারের গণনায় দেখানো হবে।

অনুশীলন

  1. চিন্তা করুন: উপরের কোডে $N=8$-এর জন্য কনজুগেট সিমেট্রি চেক $k=1$ থেকে $k=N-1=7$ পর্যন্ত চালানো হয়েছে। $k=0$-কে কেন এই লুপে অন্তর্ভুক্ত করা হয়নি বলে আপনার মনে হয়?

    $k=0$-এ সিমেট্রি সূত্র হয়ে যায় $X[N-0]=X[N]=X[0]$ (পিরিয়ডিসিটি দিয়ে) বনাম $\overline{X[0]}$ — অর্থাৎ এটি বলে $X[0]$ বাস্তব-মূল্যবান হওয়া উচিত, যা সবসময় সত্য (যেহেতু $X[0] = \sum_n x[n]$, বাস্তব সংখ্যার যোগফল)। এটি $k=4$ (N/2)-এর ক্ষেত্রেও একইভাবে প্রযোজ্য একটি বিশেষ ক্ষেত্র, তাই কোডে সাধারণ লুপে আলাদাভাবে হ্যান্ডল না করেই রাখা হয়েছে ($k=4$-এ diff সংখ্যাগতভাবে শূন্যের কাছাকাছি আসবে, যা কোড রান করলে দেখা যায়)।

  2. পরীক্ষা করুন: উপরের কোডে x-কে একটি ভিন্ন ৮-স্যাম্পলের সিগন্যাল, যেমন x = [2.0, -1.0, 0.5, 3.0, -2.5, 1.5, 0.0, -0.8]-এ বদলে Run চাপুন। সর্বোচ্চ সিমেট্রি ও পিরিয়ডিসিটি পার্থক্য কি এখনও ফ্লোটিং-পয়েন্ট নির্ভুলতার সীমায় (প্রায় $10^{-14}$ থেকে $10^{-15}$) থাকবে বলে আপনার ধারণা?

    হ্যাঁ — যেকোনো বাস্তব-মূল্যবান ইনপুট সিগন্যালের জন্যই কনজুগেট সিমেট্রি ও পিরিয়ডিসিটি সবসময় সত্য, কারণ এগুলো DFT সূত্রের গাণিতিক গঠন থেকে আসে, নির্দিষ্ট সিগন্যাল-মানের উপর নির্ভর করে না। রান করলে পার্থক্য এখনও $10^{-14}$-$10^{-15}$ পরিসরে থাকবে (সঠিক মান ইনপুটের উপর সামান্য নির্ভর করবে, কিন্তু সবসময় "প্রায় শূন্য")।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
ডিসক্রিট ফুরিয়ার ট্রান্সফর্ম (DFT)