আমার সম্পর্কে সন্দেহ আছে (সম্পাদনা করুন: এটি পরে প্রশ্ন থেকে সরানো হয়েছিল):
এই এএম এবং প্রাইম শব্দের উপাদানগুলির বিতরণ যতক্ষণ না ইনপুট সংকেতটি নমুনা ঘড়ির সাথে সম্পর্কযুক্ত থাকে ততক্ষণ সমান হিসাবে ধরে নেওয়া যেতে পারে
সংকেতটি বিবেচনা করুন:
সংকেত( t ) = cos( t ) + j পাপ( টি )
এবং এর পরিমাণ:
কুইতোমার দর্শন লগ করা একটি এন টি আমি z- র ই ঘ : _ গুলি আমি ছ এন একটি ঠ( টি ) =বৃত্তাকার( এনকোসাইন্( T ) )এন+ + ঞ ×বৃত্তাকার( এনপাপ( T ) )এন
এর একটি কোয়ান্টাইজেশন পদক্ষেপের জন্য ৩ / এন আই এবং কিউ উভয় উপাদান (আপনার কাছে রয়েছে) এন= 5 আপনার চিত্রে)।
চিত্র ১. সংকেতের বিভিন্ন অংশ কোয়ান্টাইটেড করা হয়েছে তা দেখতে সিগন্যালের ট্রেস (নীল রেখা) এবং এর পরিমাণ নির্ধারণ (কালো বিন্দাগুলি) এবং তাদের মধ্যে একটি মরফিং এন= 5। "মরফিং" কেবলমাত্র অতিরিক্ত প্যারামেট্রিক প্লটের একটি সেটএকটি সংকেত( টি ) + ( 1 - ক ) কিউতোমার দর্শন লগ করা একটি এন টি আমি z- র ই ঘ : _ গুলি আমি ছ এন একটি ঠ( টি ) এ a = [15,25,35,45] ।
কোয়ান্টাইজেশন ত্রুটির কারণে পর্যায়ে ত্রুটিটি হ'ল:
p h a s e _ e r r o r( টি ) = আতান( আমি( প্রশ্ন)তোমার দর্শন লগ করা একটি এন টি আমি z- র ই ঘ : _ গুলি আমি ছ এন একটি ঠ( টি ) ) , পুনরায়( প্রশ্ন)তোমার দর্শন লগ করা একটি এন টি আমি z- র ই ঘ : _ গুলি আমি ছ এন একটি ঠ( টি ) ) )- আতান( আমি( সংকেত( টি ) ) , পুনরায়( সংকেত( টি ) ) )= আতান( বৃত্তাকার)( এনপাপ( টি ) ) , বৃত্তাকার( এনকোসাইন্( T ) ) ) - ATAN( এনপাপ( টি ) , এনকোসাইন্( T ) )= আতান( বৃত্তাকার)( এনপাপ( টি ) ) , বৃত্তাকার( এনকোসাইন্( টি ) ) ) - মোড( টি - π), 2 π) + + Π
মোড়ানো পর্বগুলি বিয়োগ করা ঝুঁকিপূর্ণ তবে এটি এই ক্ষেত্রে কার্যকর হয়।
চিত্র ২. p h a s e _ e r r o r( টি ) জন্য এন= 5।
এটি একটি টুকরা অনুসারে লিনিয়ার ফাংশন। সমস্ত লাইন বিভাগগুলি শূন্য স্তর অতিক্রম করে তবে অন্যান্য বিভিন্ন স্তরে শেষ হয়। এর অর্থ, বিবেচনা করাটি একটি অভিন্ন র্যান্ডম ভেরিয়েবল হিসাবে, এর সম্ভাবনা ঘনত্ব ফাংশন p h a s e _ e r r o r( টি ) ,শূন্যের নিকটে মানগুলি উপস্থাপন করা হয়। সুতরাংp h a s e _ e r r o r( টি ) অভিন্ন বিতরণ থাকতে পারে না।
আসল প্রশ্নটি বিবেচনা করে, যথেষ্ট পরিমাণে ডুমুর 1 এর দিকে তাকিয়ে এনএবং জটিল সাইনোসয়েডের এমন একটি ফ্রিকোয়েন্সি যে প্রতিটি নমুনা ব্যবধানের সময় সংকেতটি বেশ কয়েকটি মানদণ্ডের গণ্ডির অতীত ঘুরে বেড়ায়, নমুনাগুলির মধ্যে কোয়ান্টাইজেশন ত্রুটিগুলি কার্যকরভাবে সিউডোরডম সংখ্যার একটি নির্দিষ্ট ক্রম যা সংখ্যার তত্ত্বের কোয়ার্ক থেকে আসে। ত্রুটিগুলি ফ্রিকোয়েন্সি এবং তার উপর নির্ভর করেএন,এবং প্রাথমিক পর্যায়েও যদি ফ্রিকোয়েন্সিটি নমুনা সংক্রান্ত ফ্রিকোয়েন্সিটির একাধিকের সংখ্যার সমষ্টি হয়, তবে এই ক্ষেত্রে কোয়ান্টাইজেশন ত্রুটি একটি পুনরাবৃত্তি ক্রম যা সমস্ত সম্ভাব্য পরিমাণ ত্রুটি মানগুলি ধারণ করে না। বৃহত্তর সীমাতেএনআই এবং কিউ ত্রুটির বিতরণগুলি অভিন্ন এবং পর্যায় এবং প্রস্থের ত্রুটিগুলি সিগন্যাল পর্যায়ে নির্ভরশীল এমন বিতরণগুলি থেকে আগত সিউডোর্যান্ডম সংখ্যা। আয়তক্ষেত্রাকার কোয়ান্টাইজেশন গ্রিডের একটি অরিয়েন্টেশন রয়েছে কারণ পর্বে নির্ভরতা রয়েছে।
বৃহত্তর সীমাতে এন,পর্যায়ে ত্রুটি এবং প্রস্থের ত্রুটি জটিল ত্রুটির লম্ব উপাদান। দৈর্ঘ্যের ত্রুটি অসীম পরিমাণে পদক্ষেপের সাথে আনুপাতিকভাবে প্রকাশ করা যেতে পারে, এবং পর্যায়ের ত্রুটি আনুপাতিকভাবে প্রকাশ করা যেতে পারেarcsinকোয়ান্টাইজেশন পদক্ষেপ। সিগন্যাল পর্যায়েα প্রস্থের ত্রুটি কৌণিক দিকে রয়েছে α এবং পর্যায় ত্রুটি কৌণিক দিকে হয় α + π/ 2। জটিল কোয়ান্টাইজেশন ত্রুটিটি আই এবং কি অক্ষের পাশাপাশি একটি কোয়ান্টাইজেশন স্টেপ বর্গক্ষেত্রে সমানভাবে বিতরণ করা হয়, স্থানাঙ্কের কোণগুলিতে কোয়ান্টাইজেশন পদক্ষেপের সাথে আনুপাতিকভাবে প্রকাশ করা হয়:
[ (1/2,1/2),( - 1 / 2 , 1 / 2 ) ,( - 1 / 2 , - 1 / 2 ) ,( 1 / 2 , - 1 / 2 ) ]
এই স্থানাঙ্কগুলির আবর্তন বা আনুপাতিক পর্যায়ে ত্রুটি এবং আনুপাতিক মাত্রার ত্রুটি অক্ষগুলির সমপরিমাণ প্রক্ষেপণ নোডগুলির সাথে একই ফ্ল্যাট-শীর্ষ টুকরা-ভিত্তিক লিনিয়ার সম্ভাব্যতা ঘনত্ব ফাংশন উভয়ের জন্য দেয়:
[কোসাইন্( α )2-পাপ( α )2,কোসাইন্( α )2+ +পাপ( α )2,-কোসাইন্( α )2+ +পাপ( α )2,-কোসাইন্( α )2-পাপ( α )2] = [2-√কোসাইন্( α + π)/ 4),2-√পাপ( α + π)/ 4),-2-√কোসাইন্( α + π)/ 4),-2-√পাপ( α + π)/ 4) ]
চিত্র ৩. সংকেত কোণটি দিয়ে সমানুপাতিক পর্যায়ে ত্রুটি এবং আনুপাতিক মাত্রার ত্রুটির ভাগ করা অংশ-ভিত্তিক লিনিয়ার ফ্ল্যাট-টপ প্রোপিবিলিটি ডেনসিটি ফাংশন (পিডিএফ) এর নোড α। এα ∈ { - π, - π/ 2,0,π/ 2,π}পিডিএফটি আয়তক্ষেত্রাকার। কিছু নোড এছাড়াও মার্জ করেα ∈ { - 3 π/ 4,-π/ 4,π/ 4,3π/ 4} সবচেয়ে খারাপের ক্ষেত্রে ত্রিভুজাকার পিডিএফ দেওয়া -এন অ্যাসিপটোটিক অনুমান 1) এর সর্বোচ্চ পরম ত্রুটি ত্রুটি 2-√/ 2 কোয়ান্টাইজেশন পদক্ষেপ এবং 2) এর সর্বোচ্চ পরম পর্বের ত্রুটি 2-√/ 2 বার arcsin কোয়ান্টাইজেশন পদক্ষেপ।
মধ্যবর্তী পর্যায়গুলিতে পিডিএফ উদাহরণস্বরূপ এটি দেখতে:
চিত্র 4. এ শেয়ার করা পিডিএফ α = π/ 8।
ড্যানের পরামর্শ অনুসারে পিডিএফটি আয়তক্ষেত্রাকার পিডিএফ এর আই এবং কিউ ত্রুটির দৈর্ঘ্য এবং ধাপের ত্রুটি অক্ষের উপরে অনুমান করা একটি আয়তক্ষেত্রাকারও একটি সমান্তরাল । প্রস্তাবিত পিডিএফগুলির একটির প্রস্থ| কোসাইন্( α ) |, এবং অন্যটির প্রস্থ হয় | পাপ( α ) |। তাদের সম্মিলিত ভেরিয়েন্স হয়কোসাইন্2( α ) / 12 +পাপ2( α ) / 12 = 1 / 12, ইউনিফর্ম ওভার α।
প্রাথমিক পর্যায়ে কিছু "সিউডলকি" সংমিশ্রণ থাকতে পারে এবং জটিল সাইনোসয়েডের কম্পাঙ্কের একটি যৌক্তিক সংখ্যা অনুপাত এবং স্যাম্পলিং ফ্রিকোয়েন্সি যা পুনরাবৃত্তির ক্রমের সমস্ত নমুনার জন্য কেবল একটি ছোট ত্রুটি দেয়। চিত্র 1-এ দেখা ত্রুটির প্রতিসাম্যগুলির কারণে সর্বাধিক পরম ত্রুটি অর্থে এই ফ্রিকোয়েন্সিগুলি একটি সুবিধার সাথে রয়েছে যার জন্য বৃত্তে পরিদর্শন করা পয়েন্টগুলির সংখ্যা 2 এর একাধিক, কারণ ভাগ্যের (নিম্ন ত্রুটি) এ প্রয়োজনীয় পয়েন্ট মাত্র অর্ধেক। বাকী পয়েন্টগুলিতে ত্রুটিটি হ'ল সাইন ফ্লিপ সহ তারা প্রথমটি কী হয় তার সদৃশ। কমপক্ষে 6, 4 এবং 12 এর গুণকগুলির আরও বেশি সুবিধা রয়েছে। আমি এখানে সঠিক নিয়মটি কী তা নিশ্চিত নই, কারণ এটি কোনও কিছুর একাধিক হওয়া বলে মনে হয় না। এটা ' মডুলো পাটিগণিতের সাথে মিলিত গ্রিডের প্রতিসাম্য সম্পর্কে কিছু। তবুও, সিউডোরডম ত্রুটিগুলি নির্বিচারক, সুতরাং একটি বিস্তৃত অনুসন্ধান সেরা ব্যবস্থা প্রকাশ করে। মূল-গড়-বর্গক্ষেত্র (আরএমএস) নিখুঁত ত্রুটি অর্থে সেরা ব্যবস্থা সন্ধান করা সবচেয়ে সহজ:
চিত্র 5 শীর্ষ) বর্গাকার পরিমাণ নির্ধারণের গ্রিড ব্যবহার করে বিভিন্ন অসিলেটর বিট গভীরতার জন্য জটিল আইকিউ অসিলেটরে সর্বনিম্ন সম্ভব আরএমএস পরম কোয়ান্টাইজেশন ত্রুটি । সিউডলকি ব্যবস্থাটির জন্য বিস্তৃত অনুসন্ধানের উত্স কোড উত্তরটির শেষে রয়েছে। নীচে) বিশদ, তুলনার জন্য দেখাচ্ছে (হালকা নীল)এন→ ∞ আরএমএসের পরম কোয়ান্টাইজেশন ত্রুটির অসম্পূর্ণ অনুমান, 1 / 6---√/ এন, জন্য এন=2ট- 1 , কোথায় কে + 1 অসিলেটর বিটের সংখ্যা।
সর্বাধিক বিশিষ্ট ত্রুটির ফ্রিকোয়েন্সিটির প্রশস্ততা আরএমএস পরম ত্রুটির চেয়ে বেশি কখনও নয়। একটি 8-বিট দোলক জন্য, একটি বিশেষ ভাল পছন্দ এই হয়12 পয়েন্টগুলি প্রায় ইউনিট বৃত্তে অবস্থিত:
{ ( 0 , ± 112 ) ,( ± 112 , 0 ) ,( ± 97 , ± 56 ) ,( ± 56 , ± 97 ) }112,00297611139371
ক্রমবর্ধমান কৌণিক ক্রমে জটিল বিমানে এই পয়েন্টগুলির মধ্য দিয়ে যায় এমন একটি জটিল জটিল সাইনোসয়েডের কেবল 5 তম সুরেলা বিকৃতি রয়েছে এবং এটিতে - 91.5 মৌলিকটির সাথে ডিবি তুলনা করুন, যেমন উত্তরের শেষে অক্টাভে উত্স কোড দ্বারা নিশ্চিত করা হয়েছে।
কম আরএমএসের পরম কোয়ান্টাইজেশন ত্রুটিটি পেতে, ফ্রিকোয়েন্সিগুলিকে আনুমানিক পর্যায়ে যেমন বিন্দুগুলির মধ্য দিয়ে যেতে হয় না [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ] ⋅ 2 π/ 12 একটি ফ্রিকোয়েন্সি জন্য 1 / 12নমুনা ফ্রিকোয়েন্সি বার। উদাহরণস্বরূপ ফ্রিকোয়েন্সি5 / 12 স্যাম্পলিং ফ্রিকোয়েন্সি একই পয়েন্টগুলির মধ্যে দিয়ে যাবে তবে একটি ভিন্ন ক্রমে: [ 0 , 5 , 10 , 3 , 8 , 1 , 6 , 11 , 4 , 9 , 2 , 7 ] ⋅ 2 π/ 12। আমি মনে করি এটি এটি যেমন কাজ করে তেমনি 5 এবং 12 টি কপিরাইম ।
সম্ভাব্য নিখুঁত বিন্যাস সম্পর্কে, ত্রুটিটি বিন্দুগুলির একেবারে শূন্য হতে পারে যদি সাইনোসয়েডের ফ্রিকোয়েন্সি নমুনা ফ্রিক্যোয়েন্সিটির এক চতুর্থাংশ হয় (ধাপের বৃদ্ধি) π/ 2প্রতি নমুনা)। বর্গক্ষেত্র গ্রিডে, অন্য কোনও নিখুঁত ব্যবস্থা নেই । ষড়ভুজ গ্রিডে বা একটি বর্গাকার আয়তক্ষেত্রাকার গ্রিডে I বা Q অক্ষরের একটি দিয়ে একটি উপাদান দ্বারা প্রসারিত3-√ (যার দ্বারা এটি মধুচক্র গ্রিডে প্রতিটি দ্বিতীয় সারির সমান), এর এক ধাপ বৃদ্ধি π/ 3প্রতি নমুনা নিখুঁতভাবে কাজ করবে। এই জাতীয় স্কেলিং অ্যানালগ ডোমেনে করা যেতে পারে। এটি গ্রিডের প্রতিসম অক্ষের সংখ্যা বাড়িয়ে তোলে, যার ফলে সিউডলকি ব্যবস্থাতে বেশিরভাগ অনুকূল পরিবর্তন ঘটে:
চিত্র various. বিভিন্ন অসিলেটর বিট গভীরতার জন্য জটিল আইকিউ অসিলেটরটিতে সর্বনিম্ন সম্ভব আরএমএস নিখুঁত কোয়ান্টাইজেশন ত্রুটিগুলি , যাকে দিয়ে ছোট ছোট একটি দিয়ে আয়তক্ষেত্রাকার কোয়ান্টাইজেশন গ্রিড ব্যবহার করে3-√।
উল্লেখযোগ্যভাবে, বৃত্তের 30 টি পয়েন্ট সহ 8-বিট দোলকের জন্য, সর্বনিম্নতম আরএমএস পরম ত্রুটিটি বর্গাকার গ্রিডে -51.3 ডিবি এবং অ বর্গাকার আয়তক্ষেত্রাকার গ্রিডে -62.5 ডিবি, যেখানে সর্বনিম্ন-আরএমএস-পরম-ত্রুটি সিউডোলাকি ক্রমটিতে ত্রুটি রয়েছে:
চিত্র 7. আইকিউ বিমানের ত্রুটির মান 8 বিট সিউডোলকি অনুক্রম 30 এর দৈর্ঘ্যের 30 এর একটি উপাদান দ্বারা প্রসারিত কোয়ান্টাইজেশন গ্রিডে পাওয়া প্রতিসাম অক্ষগুলির সুবিধা গ্রহণ করুন 3-√অনুভূমিকভাবে। পয়েন্টগুলি মাত্র তিনটি সিউডলকি জটিল সংখ্যা থেকে আসে, প্রতিসাম অক্ষের চারপাশে উল্টে যায়।
আইকিউ ক্লক সিগন্যালের সাথে আমার কোন ব্যবহারিক অভিজ্ঞতা নেই, তাই আমি নিশ্চিত যে জিনিসগুলি কী তা বোঝায় না। ডিজিটাল-থেকে-অ্যানালগ রূপান্তরকারী (ডিএসি) ব্যবহার করে ক্লক সিগন্যাল জেনারেশনের মাধ্যমে, আমি সন্দেহ করব যে ভাল সিউডলকি ব্যবস্থা না ব্যবহার করা গেলে, উচ্চতর সাথে সুরেলা শব্দের বর্ণালী হওয়ার চেয়ে কম সাদা আওয়াজ মেঝে রাখাই ভাল is স্পাইকগুলি যা কোয়ান্টাইজেশন ত্রুটির পুনরাবৃত্তি ক্রম থেকে আসে ( কোটারেন্ট স্যাম্পলিং এবং কোয়ান্টাইজেশন নয়েসের বিতরণ দেখুন )। এই বর্ণালী স্পাইকগুলি যেমন সাদা শব্দের পাশাপাশি পরজীবী ক্যাপাসিট্যান্সের মাধ্যমে ফাঁস হতে পারে এবং সিস্টেমের অন্যান্য অংশগুলিতে অযাচিত প্রভাব ফেলতে পারে বা ডিভাইসের বৈদ্যুতিন চৌম্বকীয় সামঞ্জস্যতা (ইএমসি) প্রভাবিত করে। সাদৃশ্য হিসাবে, স্প্রেড স্পেকট্রাম প্রযুক্তি বর্ণাল স্পাইকগুলি একটি নিম্ন-শিখর শব্দ তলে পরিণত করে EMC কে উন্নত করে।
সি ++ তে বিস্তৃত সিউডলকি ব্যবস্থা সম্পর্কিত অনুসন্ধানের সূত্র অনুসরণ করে। আপনি এটির জন্য কমপক্ষে 16-বিট অসিলেটরগুলির জন্য সেরা ব্যবস্থা সন্ধান করতে রাতারাতি চালাতে পারেন1 ≤ এম। 100।
// Compile with g++ -O3 -std-c++11
#include <stdio.h>
#include <math.h>
#include <complex>
#include <float.h>
#include <algorithm>
// N = circle size in quantization steps
const int maxN = 127;
// M = number of points on the circle
const int minM = 1;
const int maxM = 100;
const int stepM = 1;
// k = floor(log2(N))
const int mink = 2;
const double IScale = 1; // 1 or larger please, sqrt(3) is very lucky, and 1 means a square grid
typedef std::complex<double> cplx;
struct Arrangement {
int initialI;
int initialQ;
cplx fundamentalIQ;
double fundamentalIQNorm;
double cost;
};
int main() {
cplx rotation[maxM+1];
cplx fourierCoef[maxM+1];
double invSlope[maxM+1];
Arrangement bestArrangements[(maxM+1)*(int)(floor(log2(maxN))+1)];
const double maxk(floor(log2(maxN)));
const double IScaleInv = 1/IScale;
for (int M = minM; M <= maxM; M++) {
rotation[M] = cplx(cos(2*M_PI/M), sin(2*M_PI/M));
invSlope[M] = tan(M_PI/2 - 2*M_PI/M)*IScaleInv;
for (int k = 0; k <= maxk; k++) {
bestArrangements[M+(maxM+1)*k].cost = DBL_MAX;
bestArrangements[M+(maxM+1)*k].fundamentalIQNorm = 1;
}
}
for (int M = minM; M <= maxM; M += stepM) {
for (int m = 0; m < M; m++) {
fourierCoef[m] = cplx(cos(2*M_PI*m/M), -sin(2*M_PI*m/M))/(double)M;
}
for (int initialQ = 0; initialQ <= maxN; initialQ++) {
int initialI(IScale == 1? initialQ : 0);
initialI = std::max(initialI, (int)floor(invSlope[M]*initialQ));
if (initialQ == 0 && initialI == 0) {
initialI = 1;
}
for (; initialI*(int_least64_t)initialI <= (2*maxN + 1)*(int_least64_t)(2*maxN + 1)/4 - initialQ*(int_least64_t)initialQ; initialI++) {
cplx IQ(initialI*IScale, initialQ);
cplx roundedIQ(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
cplx fundamentalIQ(roundedIQ*fourierCoef[0].real());
for (int m = 1; m < M; m++) {
IQ *= rotation[M];
roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
fundamentalIQ += roundedIQ*fourierCoef[m];
}
IQ = fundamentalIQ;
roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
double cost = norm(roundedIQ-IQ);
for (int m = 1; m < M; m++) {
IQ *= rotation[M];
roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
cost += norm(roundedIQ-IQ);
}
double fundamentalIQNorm = norm(fundamentalIQ);
int k = std::max(floor(log2(initialI)), floor(log2(initialQ)));
// printf("(%d,%d)",k,initialI);
if (cost*bestArrangements[M+(maxM+1)*k].fundamentalIQNorm < bestArrangements[M+(maxM+1)*k].cost*fundamentalIQNorm) {
bestArrangements[M+(maxM+1)*k] = {initialI, initialQ, fundamentalIQ, fundamentalIQNorm, cost};
}
}
}
}
printf("N");
for (int k = mink; k <= maxk; k++) {
printf(",%d-bit", k+2);
}
printf("\n");
for (int M = minM; M <= maxM; M += stepM) {
printf("%d", M);
for (int k = mink; k <= maxk; k++) {
printf(",%.13f", sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
}
printf("\n");
}
printf("bits,M,N,fundamentalI,fundamentalQ,I,Q,rms\n");
for (int M = minM; M <= maxM; M += stepM) {
for (int k = mink; k <= maxk; k++) {
printf("%d,%d,%.13f,%.13f,%.13f,%d,%d,%.13f\n", k+2, M, sqrt(bestArrangements[M+(maxM+1)*k].fundamentalIQNorm), real(bestArrangements[M+(maxM+1)*k].fundamentalIQ), imag(bestArrangements[M+(maxM+1)*k].fundamentalIQ), bestArrangements[M+(maxM+1)*k].initialI, bestArrangements[M+(maxM+1)*k].initialQ, sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
}
}
}
এর সাথে পাওয়া প্রথম উদাহরণ ক্রম বর্ণনা করে নমুনা আউটপুট IScale = 1
:
bits,M,N,fundamentalI,fundamentalQ,I,Q,rms
8,12,112.0029761113937,112.0029761113937,0.0000000000000,112,0,0.0000265717171
সন্ধান পাওয়া দ্বিতীয় উদাহরণ ক্রম বর্ণনা করে নমুনা আউটপুট IScale = sqrt(3)
:
8,30,200.2597744568315,199.1627304588310,20.9328464782995,115,21,0.0007529202390
প্রথম উদাহরণ ক্রম পরীক্ষার জন্য অক্টাভা কোড:
x = [112+0i, 97+56i, 56+97i, 0+112i, -56+97i, -97+56i, -112+0i, -97-56i, -56-97i, 0-112i, 56-97i, 97-56i];
abs(fft(x))
20*log10(abs(fft(x)(6)))-20*log10(abs(fft(x)(2)))
দ্বিতীয় উদাহরণ ক্রম পরীক্ষার জন্য অক্টাভা কোড:
x = exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i);
y = real(x)/sqrt(3)+imag(x)*i;
z = (round(real(y))*sqrt(3)+round(imag(y))*i)/200.2597744568315;
#Error on IQ plane
star = z-exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i)/200.2597744568315;
scatter(real(star), imag(star));
#Magnitude of discrete Fourier transform
scatter((0:length(z)-1)*2*pi/30, 20*log10(abs(fft(z))/abs(fft(z)(2)))); ylim([-120, 0]);
#RMS error:
10*log10((sum(fft(z).*conj(fft(z)))-(fft(z)(2).*conj(fft(z)(2))))/(fft(z)(2).*conj(fft(z)(2))))