Z-ট্রান্সফর্ম — সংজ্ঞা ও স্বজ্ঞা
এই পাঠে যা শিখবেন
- Z-ট্রান্সফর্মের আনুষ্ঠানিক সংজ্ঞা এবং কেন এটিকে "z^-1-এর পলিনোমিয়াল" হিসেবে ভাবা যায়
- ফিনিট-লেংথ সিগন্যালের জন্য কীভাবে Z-ট্রান্সফর্মের কোয়েফিসিয়েন্টগুলো সরাসরি সিগন্যালের নমুনা
- কমপ্লেক্স
z-মানে Z-ট্রান্সফর্মের মান হাতে-কলমে গণনা করা (Pythoncomplexদিয়ে) - Z-ট্রান্সফর্ম কেন M3-এর ডিফারেন্স ইকুয়েশন/কনভোলিউশন এবং M5-এর ফ্রিকোয়েন্সি-ডোমেইন অ্যানালাইসিসের মাঝে একটি সেতু
১ · Z-ট্রান্সফর্মের সংজ্ঞা
একটি ডিসক্রিট-টাইম সিগন্যাল x[n]-এর
Z-ট্রান্সফর্মZ-transformএকটি ডিসক্রিট-টাইম সিগন্যালকে কমপ্লেক্স ভেরিয়েবল z-এর একটি ফাংশনে রূপান্তরকারী গাণিতিক টুল, যা সিগন্যাল ও সিস্টেম অ্যানালাইসিসকে বীজগণিতীয় করে তোলে।
সংজ্ঞায়িত হয়:
এখানে z একটি কমপ্লেক্স সংখ্যা। এই সংজ্ঞাটি প্রথম দেখায় ভয়ংকর লাগতে পারে (অসীম সিরিজ,
কমপ্লেক্স সংখ্যা), কিন্তু আসল ধারণা সহজ — প্রতিটি নমুনা x[n]-কে z^-n
দিয়ে "ওজন" দিয়ে যোগ করা হচ্ছে। M3-এ যেমন কনভোলিউশনকে "শিফট-অ্যান্ড-মাল্টিপ্লাই-অ্যান্ড-সাম" হিসেবে
দেখেছিলেন, এখানেও তেমনি — শুধু যোগফলটা এখন z-এর একটি ফাংশন হয়ে যাচ্ছে।
যদি
x[n] শুধু n = 0, 1, ..., N-1-এর জন্য নন-জিরো হয়, তাহলে X(z) = x[0] + x[1]z^-1 + ... + x[N-1]z^-(N-1) — একটি সাধারণ পলিনোমিয়াল, যার কোয়েফিসিয়েন্টগুলোই সিগন্যালের নমুনা।একটি নমুনা এক ধাপ পিছিয়ে দিলে (M3/L12-এর
x[n-1]) তার Z-ট্রান্সফর্ম z^-1 দিয়ে গুণ হয়ে যায় — এই সরল বীজগণিতীয় সম্পর্কই Z-ট্রান্সফর্মকে ডিফারেন্স ইকুয়েশন সমাধানের (L19) মূল হাতিয়ার বানায়।z = e^{jω} বসালে (অর্থাৎ ইউনিট সার্কেলের উপর দিয়ে হাঁটলে) Z-ট্রান্সফর্ম হয়ে যায় DTFT (M5/L20) — Z-ট্রান্সফর্ম গোটা কমপ্লেক্স প্লেনে সংজ্ঞায়িত বলে বেশি সাধারণ ও শক্তিশালী।২ · একটি সত্যিকারের ডেমো — ফিনিট সিকোয়েন্সের Z-ট্রান্সফর্ম
ধরা যাক আমাদের একটি ছোট ফিনিট-লেংথ সিগন্যাল আছে: x = [1, 2, 3, 4] (অর্থাৎ
x[0]=1, x[1]=2, x[2]=3, x[3]=4, বাকি সব n-এ শূন্য)। এর Z-ট্রান্সফর্ম হবে
$X(z) = 1 + 2z^{-1} + 3z^{-2} + 4z^{-3}$ — কোয়েফিসিয়েন্টগুলো লক্ষ্য করুন, এগুলো ঠিক সিগন্যালের নমুনার
মতোই। নিচের কোডে এটি Python-এ বাস্তবায়ন করে কয়েকটি নির্দিষ্ট কমপ্লেক্স z-মানে মান গণনা
করা হয়েছে।
x = [1, 2, 3, 4] # x[0]=1, x[1]=2, x[2]=3, x[3]=4 (কজাল, ফিনিট-লেংথ)
def X(z, coeffs=x):
total = 0j
for n, c in enumerate(coeffs):
total += c * z**(-n)
return total
print("x[n] সিরিজ:", x)
print("X(z) = " + " + ".join(f"{c}z^-{n}" if n else f"{c}" for n, c in enumerate(x)))
print()
test_points = [2+0j, 1j, 1+1j]
for z in test_points:
val = X(z)
print(f"z = {z} -> X(z) = {val} |X(z)| = {abs(val):.6f}")
print()
# z = 2+0j -এ টার্ম-বাই-টার্ম গণনা
z = 2+0j
print(f"z = {z} এ টার্ম-বাই-টার্ম:")
running = 0j
for n, c in enumerate(x):
term = c * z**(-n)
running += term
print(f" n={n}: {c} * z^-{n} = {c} * {z**(-n)} = {term} (আংশিক যোগফল = {running})")
z=2+0j-এ X(2) = 3.25 (বাস্তব সংখ্যা, কারণ z
বাস্তব), z=1j-এ X(1j) = -2+2j (|X(1j)| ≈ 2.828427), আর
z=1+1j-এ X(1+1j) = 1-3.5j (|X(1+1j)| ≈ 3.640055)। টার্ম-বাই-টার্ম
অংশে z=2-এ আংশিক যোগফল ধাপে ধাপে 1 → 2 → 2.75 → 3.25-এ পৌঁছায় — প্রতিটি ধাপ
স্রেফ পলিনোমিয়ালের একটি নতুন পদ যোগ করছে।
৩ · কেন এটি এত গুরুত্বপূর্ণ
M3-এ আপনি শিখেছেন যে দুটো সিগন্যালের কনভোলিউশন (L10) একটি সিস্টেমের আউটপুট গণনা করে, এবং একটি ডিফারেন্স ইকুয়েশন (L12) সেই সিস্টেমকে বর্ণনা করে। Z-ট্রান্সফর্মের সবচেয়ে বড় শক্তি হলো — টাইম-ডোমেইনে কনভোলিউশন, Z-ডোমেইনে হয়ে যায় সাধারণ গুণ ($Y(z) = X(z) \cdot H(z)$, বিস্তারিত L15-এ)। এর মানে জটিল কনভোলিউশন সাম না করে, শুধু দুটো পলিনোমিয়াল/ফাংশন গুণ করলেই আউটপুটের Z-ট্রান্সফর্ম পাওয়া যায় — এই বীজগণিতীয় সরলীকরণই L18-L19-এ ট্রান্সফার ফাংশন ও ডিফারেন্স ইকুয়েশন সমাধানকে সহজ করে তোলে।
Z-ট্রান্সফর্ম একটি সিগন্যালকে "সময়ের ক্রম" থেকে "z^-1-এর পলিনোমিয়াল কোয়েফিসিয়েন্ট"-এ রূপান্তর করে — এই দৃষ্টিভঙ্গি বদলটাই DSP-র সবচেয়ে শক্তিশালী গাণিতিক টুল তৈরি করে। পরবর্তী পাঠগুলোতে (L15-L19) আমরা এর বৈশিষ্ট্য, কনভারজেন্সের অঞ্চল, ইনভার্স, ট্রান্সফার ফাংশন ও ডিফারেন্স ইকুয়েশন সমাধানে এর প্রয়োগ দেখব।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ ফিনিট-লেংথ সিগন্যালের Z-ট্রান্সফর্মের কোয়েফিসিয়েন্টগুলো কেন সরাসরি সিগন্যালের নমুনার সমান?
কারণ সংজ্ঞা অনুযায়ী $X(z) = \sum x[n] z^{-n}$ — এটি $z^{-n}$-এর একটি ওয়েটেড যোগফল, যেখানে ওজনগুলোই
x[n]। একটি সাধারণ পলিনোমিয়াল $a_0 + a_1 t + a_2 t^2$-এর সাথে তুলনা করলে $t = z^{-1}$
বসালে ঠিক এই একই রূপ পাওয়া যায়, আর কোয়েফিসিয়েন্ট $a_n$ গুলোই আসলে $x[n]$।
প্র ০২
উপরের ডেমোতে z=2+0j একটি বাস্তব সংখ্যা হলেও X(2)-এর ফলাফল
3.25+0j — একটি কমপ্লেক্স নাম্বার হিসেবে প্রিন্ট হলো কেন?
কারণ কোডে total = 0j দিয়ে শুরু করা হয়েছে — Python-এ একবার কোনো ভেরিয়েবল
complex টাইপ হয়ে গেলে, তার সাথে যোগ/গুণ হওয়া সব ফলাফলও complex থাকে, এমনকি
কাল্পনিক অংশ শূন্য হলেও। এটি ইচ্ছাকৃত — কারণ Z-ট্রান্সফর্ম সাধারণভাবে কমপ্লেক্স-মূল্যবান, তাই কোডে
সবসময় complex ব্যবহার করাই নিরাপদ অভ্যাস।
প্র ০৩
যদি সিগন্যালটি অসীম-লেংথ হতো (যেমন x[n] = 0.5^n, সব n≥0-এর জন্য), তাহলে
কি উপরের কোডের পদ্ধতিতে সরাসরি Z-ট্রান্সফর্ম গণনা করা যেত?
না, সরাসরি নয় — কারণ লুপটি ফিনিট বার চলে। অসীম-লেংথ সিগন্যালের জন্য Z-ট্রান্সফর্ম একটি অসীম সিরিজ,
যা শুধুমাত্র নির্দিষ্ট z-মানে কনভার্জ (সীমিত মানে পৌঁছায়) করে — কোথায় কনভার্জ করে তা-ই
"কনভারজেন্সের অঞ্চল" বা ROC, যা L16-এ বিস্তারিত আলোচনা করা হবে। তবে ট্রাংকেটেড (কেটে নেওয়া, ফিনিট
পদ পর্যন্ত) যোগফল দিয়ে আনুমানিক মান বের করা সম্ভব, যেমনটা L17-এ দেখানো হবে।
অনুশীলন
-
চিন্তা করুন: যদি সিগন্যাল
x = [1, 2, 3, 4]-এর বদলেx = [4, 3, 2, 1]হতো (ক্রমটা উল্টে দিলে), তাহলেz = 2+0j-এX(2)-এর মান কত হবে বলে আপনার ধারণা? হাতে হিসেব করার চেষ্টা করুন।$X(2) = 4 + 3(2)^{-1} + 2(2)^{-2} + 1(2)^{-3} = 4 + 1.5 + 0.5 + 0.125 = 6.125$। লক্ষ্য করুন এটি মূল ক্রমের
X(2)=3.25-এর চেয়ে ভিন্ন — কারণ প্রতিটি কোয়েফিসিয়েন্ট এখন ভিন্ন ওজন (z^-n) পাচ্ছে। -
পরীক্ষা করুন: উপরের কোড সেলে
x = [1, 2, 3, 4]-কেx = [4, 3, 2, 1]-এ পরিবর্তন করে Run চেপে আপনার হিসেব যাচাই করুন।রান করলে সত্যিই
X(2) = 6.125+0jদেখাবে — আপনার হাতের হিসেবের সাথে মিলে যায়। এটি দেখায় Z-ট্রান্সফর্ম শুধু "কোন নমুনাগুলো আছে" তার উপর নির্ভর করে না, বরং কোন নমুনা কোন সময়ে (কোন কোয়েফিসিয়েন্টে) আছে তার উপরেও নির্ভর করে।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ স্যাম্পলিং, কনভোলিউশন, Z-ট্রান্সফর্ম, DTFT/DFT, FFT, FIR/IIR ফিল্টার ডিজাইন, মাল্টিরেট প্রসেসিং, স্পেকট্রাল এস্টিমেশন, র্যান্ডম সিগন্যাল প্রসেসিং, বাস্তব প্রয়োগ ও ক্যাপস্টোন।
-
Math for AI & ML কোর্স সহোদর কোর্স
কমপ্লেক্স সংখ্যা ও ট্রিগোনোমেট্রির ভিত্তি — এই পাঠে ব্যবহৃত
complex/cmathগণিতের পটভূমি বুঝতে সহায়ক। - সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, Machine Learning, Deep Learning, System Design, Cybersecurity, Cloud Computing & DevOps, এবং আরও অনেক কোর্স — সব এক জায়গায়।