পাঠ ১৫ · ৫৭-এর মধ্যে · মডিউল ৪
Home / Courses / Digital Signal Processing / বৈশিষ্ট্য

Z-ট্রান্সফর্মের বৈশিষ্ট্য

Z-transform properties
৯ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

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

  • Z-ট্রান্সফর্মের লিনিয়ারিটি বৈশিষ্ট্য এবং কেন এটি সিস্টেম সুপারপজিশনের (M1/L04) সাথে সরাসরি সম্পর্কিত
  • টাইম-শিফটিং বৈশিষ্ট্য এবং কেন এটি ডিফারেন্স ইকুয়েশন (M3/L12) সমাধানে গুরুত্বপূর্ণ (L19-এ প্রয়োগ)
  • Python কোড দিয়ে উভয় বৈশিষ্ট্য সংখ্যাগতভাবে যাচাই করা
  • কনভোলিউশন বৈশিষ্ট্য ($Y(z)=X(z)H(z)$) সম্পর্কে সংক্ষিপ্ত ধারণা, যা L18-এ ট্রান্সফার ফাংশনে বিস্তারিত হবে

১ · লিনিয়ারিটি (Linearity)

Z-ট্রান্সফর্ম একটি লিনিয়ার অপারেশন — অর্থাৎ যদি $X(z) = Z\{x[n]\}$ এবং $W(z) = Z\{w[n]\}$ হয়, তাহলে যেকোনো ধ্রুবক $a, b$-এর জন্য:

$$Z\{a\,x[n] + b\,w[n]\} = a\,X(z) + b\,W(z)$$

এটি সরাসরি সংজ্ঞা থেকে আসে — যোগফলের ভেতরে z^-n দিয়ে গুণ করাটা একটি লিনিয়ার অপারেশন, তাই যোগফল ও ধ্রুবক-গুণ ভেতরে-বাইরে অবাধে সরানো যায়। এই বৈশিষ্ট্যটি M1/L04-এ শেখা সুপারপজিশন নীতিরই একটি রূপ — একটি LTI সিস্টেমের ইনপুট যদি দুটো সিগন্যালের যোগফল হয়, আউটপুটও সেই দুটোর পৃথক আউটপুটের যোগফল হবে, আর Z-ডোমেইনেও এই সম্পর্ক অক্ষুণ্ণ থাকে।

২ · টাইম-শিফটিং (Time-shifting)

যদি একটি সিগন্যাল x[n]-কে k নমুনা দেরি করানো হয় (y[n] = x[n-k]), তাহলে:

$$Z\{x[n-k]\} = z^{-k}\, X(z)$$

এটিই সেই বৈশিষ্ট্য যা L14-এর "ডিলে = z^-1 দিয়ে গুণ" ধারণাকে সাধারণীকরণ করে যেকোনো শিফট k-এর জন্য। এই বৈশিষ্ট্যের কারণেই একটি ডিফারেন্স ইকুয়েশন (যেমন y[n] = a·y[n-1] + x[n]) Z-ডোমেইনে একটি সাধারণ বীজগণিতীয় সমীকরণে পরিণত হয় — L19-এ আমরা ঠিক এই বৈশিষ্ট্য ব্যবহার করে একটি ডিফারেন্স ইকুয়েশন সমাধান করব।

লিনিয়ারিটি
Z{a·x + b·w} = a·X(z) + b·W(z) — সুপারপজিশনের বীজগণিতীয় রূপ।
টাইম-শিফটিং
Z{x[n-k]} = z^-k · X(z) — একটি শিফট = z^-k দিয়ে গুণ।
কনভোলিউশন (পূর্বরূপ)
M3/L10-এর কনভোলিউশন সাম Z-ডোমেইনে হয়ে যায় সাধারণ গুণ: Y(z) = X(z)·H(z) — বিস্তারিত L18-এ।

৩ · একটি সত্যিকারের ডেমো — উভয় বৈশিষ্ট্য যাচাই

নিচের কোডে দুটো ছোট সিকোয়েন্স x = [1, 2, 3, 4] এবং w = [2, 0, 1, 1] ব্যবহার করে প্রথমে লিনিয়ারিটি (a=2, b=-3), তারপর x-কে k=2 ধাপ শিফট করে টাইম-শিফটিং বৈশিষ্ট্য যাচাই করা হয়েছে — একই টেস্ট পয়েন্ট z = 1+1j-এ।

Python
def Zt(coeffs, z):
    total = 0j
    for n, c in enumerate(coeffs):
        total += c * z**(-n)
    return total

# ---- লিনিয়ারিটি যাচাই ----
x = [1, 2, 3, 4]
w = [2, 0, 1, 1]
a, b = 2, -3
z = 1 + 1j

combo = [a*xi + b*wi for xi, wi in zip(x, w)]
lhs = Zt(combo, z)                     # Z{a x + b w}
rhs = a*Zt(x, z) + b*Zt(w, z)           # a Z{x} + b Z{w}

print("--- লিনিয়ারিটি ---")
print("x[n] =", x, " w[n] =", w, f" a={a}, b={b}, z={z}")
print("combo[n] = a*x[n] + b*w[n] =", combo)
print(f"Z{{a x + b w}}(z)       = {lhs}")
print(f"a*Z{{x}}(z) + b*Z{{w}}(z) = {rhs}")
print(f"পার্থক্য (should be ~0): {abs(lhs - rhs):.3e}")

print()
print("--- টাইম-শিফটিং ---")
k = 2
y = [0]*k + x   # y[n] = x[n-k], কজাল জিরো-প্যাডেড শিফট
print("x[n] =", x)
print(f"y[n] = x[n-{k}] =", y)

Xz = Zt(x, z)
Yz = Zt(y, z)
predicted = z**(-k) * Xz

print(f"z = {z}")
print(f"X(z)          = {Xz}")
print(f"Y(z) (সরাসরি)   = {Yz}")
print(f"z^-{k} * X(z)   = {predicted}   (ভবিষ্যদ্বাণী: Z{{x[n-k]}} = z^-k X(z))")
print(f"পার্থক্য (should be ~0): {abs(Yz - predicted):.3e}")

    
Run চেপে দেখুন — লিনিয়ারিটি অংশে Z{a x + b w}(z) = -3.25-4.75j এবং a·Z{x}(z) + b·Z{w}(z)-ও ঠিক একই -3.25-4.75j, পার্থক্য 0.000e+00। টাইম-শিফটিং অংশে X(z) = 1-3.5j, আর z^-2·X(z) = -1.75-0.5j — যা সরাসরি শিফট-করা সিগন্যাল y-এর Z-ট্রান্সফর্ম Y(z) = -1.75-0.5j-এর সাথে হুবহু মিলে যায়, পার্থক্য আবারও শূন্য। দুটো বৈশিষ্ট্যই সংখ্যাগতভাবে নিশ্চিত হলো।
মূল কথা · Key takeaway

লিনিয়ারিটি ও টাইম-শিফটিং একসাথে Z-ট্রান্সফর্মকে ডিফারেন্স ইকুয়েশন সমাধানের একটি অতি-শক্তিশালী টুলে পরিণত করে — যেকোনো লিনিয়ার কম্বিনেশন ও শিফট-করা টার্মকে সরল বীজগণিতে রূপান্তর করা যায় (L19)। পরের পাঠে (L16) আমরা দেখব এই সিরিজগুলো কোথায় আসলে কনভার্জ করে — কনভারজেন্সের অঞ্চল (ROC)।

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

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

প্র ০১ লিনিয়ারিটি বৈশিষ্ট্যটি M1/L04-এ শেখা LTI সিস্টেমের সুপারপজিশন নীতির সাথে কীভাবে সম্পর্কিত?

সুপারপজিশন বলে, একটি লিনিয়ার সিস্টেমে দুটো ইনপুটের যোগফলের আউটপুট, পৃথক আউটপুটের যোগফলের সমান। Z-ট্রান্সফর্মের লিনিয়ারিটি ঠিক এই একই নীতি — কিন্তু সিগন্যালের ডোমেইনে প্রয়োগ করা, সিস্টেমের নয়। দুটোই আসলে একই গাণিতিক সত্য (সমষ্টি ও স্কেলিং অপারেশনের সাথে কমিউট করে) ভিন্ন প্রসঙ্গে প্রয়োগ।

প্র ০২ টাইম-শিফটিং বৈশিষ্ট্যে k ঋণাত্মক হলে (অর্থাৎ সিগন্যালকে ভবিষ্যতের দিকে এগিয়ে দিলে, x[n+2]) সূত্রটি কেমন হবে?

সূত্র একই থাকে, শুধু k-এর জায়গায় ঋণাত্মক মান বসবে: $Z\{x[n+2]\} = z^{-(-2)}X(z) = z^2 X(z)$। তবে বাস্তবে এই "অ্যাডভান্স" (ভবিষ্যতের দিকে শিফট) কজাল সিগন্যালের জন্য সমস্যাযুক্ত — M3/L13-এর কজালিটি আলোচনার সাথে সরাসরি সম্পর্কিত, কারণ একটি কজাল সিস্টেম ভবিষ্যতের ইনপুটের উপর নির্ভর করতে পারে না।

প্র ০৩ উপরের কোডে y = [0]*k + x লিখে শিফট বাস্তবায়ন করা হয়েছে। এটি কেন সঠিকভাবে x[n-k]-কে প্রতিনিধিত্ব করে?

x[n-k]-এর মানে হলো — নতুন সিগন্যালের n-তম অবস্থানে পুরনো সিগন্যালের (n-k)-তম মান বসবে। যেহেতু n < k-এর জন্য (n-k) ঋণাত্মক (আর কজাল সিগন্যাল ঋণাত্মক n-এ শূন্য), প্রথম kটি অবস্থানে শূন্য বসে, তারপর মূল x-এর মানগুলো একে একে আসে — ঠিক যেমন [0]*k + x তৈরি করে।

অনুশীলন

  1. চিন্তা করুন: উপরের কোডে k=2-এর বদলে k=3 ব্যবহার করলে (একই z=1+1j-এ) z^-k · X(z)-এর মান কীভাবে বদলাবে? সূত্রটি দিয়ে যুক্তি দিন, সঠিক সংখ্যা বের করার দরকার নেই।

    যেহেতু X(z) অপরিবর্তিত থাকবে, শুধু z^-k-এর মান বদলাবে — k বাড়লে z^-k-এর ম্যাগনিচিউড আরও কমবে (কারণ |z|=√2 > 1, তাই |z|^-k k বাড়ার সাথে সাথে কমে) এবং ফেজও ঘুরে যাবে। ফলে z^-3·X(z)-এর ম্যাগনিচিউড z^-2·X(z)-এর চেয়ে ছোট হবে।

  2. পরীক্ষা করুন: উপরের কোড সেলে k = 2-কে k = 3-এ পরিবর্তন করে (এবং y-এর সংজ্ঞা একই রেখে) Run চেপে টাইম-শিফটিং সূত্র এখনও মেলে কিনা যাচাই করুন।

    রান করলে Y(z) (সরাসরি গণনা) এবং z^-3·X(z) (সূত্র থেকে ভবিষ্যদ্বাণী) এখনও হুবহু মিলে যাবে, পার্থক্য 0.000e+00-এর কাছাকাছি থাকবে — টাইম-শিফটিং বৈশিষ্ট্য যেকোনো k-এর জন্যই সত্য, শুধু k=2-এর জন্য নয়।

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

আগের পাঠ
Z-ট্রান্সফর্ম — সংজ্ঞা ও স্বজ্ঞা