তাত্ক্ষণিক ফ্রিকোয়েন্সি গণনা করুন এবং ব্যাখ্যা করুন


9

আমি তাত্ক্ষণিক ফ্রিকোয়েন্সি গণনা করার নীতিতে নতুন এবং এটি নিয়ে প্রচুর প্রশ্ন নিয়ে এসেছি। আপনি এই পাঠ্যের শেষে বুলেট-পয়েন্ট তালিকার মধ্যে সমস্তটি খুঁজে পান। লেখাটি কিছুটা দীর্ঘ হতে পারে, এর জন্য আমাকে ক্ষমা করুন, কিন্তু আমি সত্যিই নিজের থেকেই সেই সমস্যাটি নিয়ে কাজ করার চেষ্টা করেছি।

সুতরাং আমি আসল মূল্যবান সিগন্যাল এর তাত্ক্ষণিক ফ্রিকোয়েন্সি । গণনাটি বিশ্লেষণী সংকেত , যেখানে হল হিলবার্ট রূপান্তর ।(টি)এক্স(টি)z- র(টি)=এক্স(টি)+ +Y(টি)Y(টি)এক্স(টি)

বিশ্লেষণী সংকেত থেকে তাত্ক্ষণিক ফ্রিকোয়েন্সি গণনা করার জন্য আমি কাগজটি অনুসরণ করেছি:z- র(টি)

1992 থেকে আর্থার ই বার্নসের তাত্ক্ষণিক ফ্রিকোয়েন্সি এবং তাত্ক্ষণিক ব্যান্ডউইথের গণনা this এই কাগজে তিনি তাত্ক্ষণিক ফ্রিকোয়েন্সি গণনা করার জন্য একাধিক পদ্ধতি প্রবর্তন করেছেন। আমি লিখে রাখলাম, তিনি প্রস্তাবিত সমস্ত সূত্র (এবং আমি ব্যবহার করেছি) এক মুহুর্তে।

"শেখার" জন্য, আমি ম্যাটল্যাব-এ খুব সাধারণ এবং দুটি আরও জটিল জটিল সংকেত নিয়ে খেললাম এবং তাদের তাত্ক্ষণিক ফ্রিকোয়েন্সি পেতে চেয়েছিলাম।

Fs = 1000;                                            % sampling-rate = 1kHz
t = 0:1/Fs:10-1/Fs;                                    % 10s 'Timevector'
chirp_signal = chirp(t,0,1,2);                         % 10s long chirp-signal, signal 1
added_sinusoid = chirp_signal + sin(2*pi*t*10);        % chirp + sin(10Hz), signal 2
modulated_sinusoid = chirp_signal .* sin(2*pi*t*10);   % chirp * sin(10Hz), signal 3

এই তিনটি সিগন্যালের টাইম ডোমেনের প্লটগুলি নিম্নলিখিতটি দেখায়: সময় ডোমেন প্লট

কাগজ থেকে সমস্ত পদ্ধতি প্রয়োগ করার পরে যে তাত্ক্ষণিক ফ্রিকোয়েন্সি পেয়েছি তার প্লটগুলি হ'ল:

খাঁটি চিপ সংকেতের খাঁটি চিপ সংকেতের তাত্ক্ষণিক ফ্রিকোয়েন্সি তাত্ক্ষণিক ফ্রিকোয়েন্সি : যুক্ত সাইনোসয়েডের সাথে চিপ সিগন্যালের তাত্ক্ষণিক ফ্রিকোয়েন্সি : মোডুলেটেড চিপ সিগন্যালের যুক্ত সাইনোসয়েড সহ চিপ সিগন্যালের তাত্ক্ষণিক ফ্রিকোয়েন্সি তাত্ক্ষণিক ফ্রিকোয়েন্সি: মোডুলেটেড চিপ সিগন্যালের তাত্ক্ষণিক ফ্রিকোয়েন্সি দয়া করে নোট করুন, তিনটি চিত্রের মধ্যে, প্লট 3 এবং 4 এর y- অক্ষটি জুমযুক্ত, সুতরাং সেইগুলির বিস্তৃতিগুলি সিগন্যাল খুব ছোট!

তাত্ক্ষণিক ফ্রিকোয়েন্সি থেকে বিশ্লেষণী সংকেত থেকে পাওয়ার প্রথম সম্ভাবনা হ'ল: যেখানে তাত্ক্ষণিক পর্যায়ে। আমি মনে করি এটি বর্তমানে ব্যবহৃত সবচেয়ে সাধারণ পদ্ধতি, কমপক্ষে ম্যাটল্যাবের ওয়েবপৃষ্ঠায় এটি সেভাবে গণনা করা হয়। কোডটি নিম্নলিখিতটি দেখায়:

2(টি)=12πটিθ(টি)
θ(টি)

function [instantaneous_frequency] = f2(analytic_signal,Fs)
    factor =  Fs/(2*pi);
    instantaneous_frequency = factor * diff(unwrap(angle(analytic_signal)));
    % Insert leading 0 in return-vector to maintain size
    instantaneous_frequency = [0 instantaneous_frequency];
end

কাগজে বার্নস এখন বিশ্লেষণী সংকেত থেকে তাত্ক্ষণিক ফ্রিকোয়েন্সি গণনা করার জন্য আরও চারটি উপায় (বা বরং সংকলিত বলেছে) পরামর্শ দেয়। তিনি উপরের সূত্রটিও উল্লেখ করেছেন, তবে এই মতামতটি যে পর্যায়টির অস্পষ্টতার কারণে এটি ব্যবহারিক নয়। আমার ধারণা, তিনি unwrap()পদ্ধতি সম্পর্কে জানতেন না , বা এর পিছনে আরও গণিতটি সুনির্দিষ্ট করে তুলতে পারেন। (তাত্ক্ষণিক ফ্রিকোয়েন্সিগুলিতে অন্য কোনও উত্স কোডের দিকে তাকানোর সময় আমি নিজেই সেই পদ্ধতিটি সম্পর্কে আজ শিখেছি)

তার কাগজে সূত্রে লেবেল নম্বর (2) রয়েছে, অতএব, আমি চ (টি) সূচকটি 2 দিয়েছিলাম other

ধাপে অস্পষ্টতার কারণে, তিনি বরং পরামর্শ দিয়েছেন:

3(টি)=12πএক্স(টি)Y'(টি)একটি-এক্স'(টি)Y(টি)এক্স(টি)2+ +Y(টি)2
the প্রোগ্রামিংটি কিছুটা সহজ করার জন্য আমি "এ", "বি", "সি" এবং "ডি" চিহ্নগুলি উপস্থাপন করেছি:

function [instantaneous_frequency] = f3(analytic_signal,Fs,T)
    x = real(analytic_signal);
    y = imag(analytic_signal);
    diff_x = diff(x);
    diff_y = diff(y);
    factor = Fs/(2*pi);
    a = x(2:end).*diff_y;
    b = y(2:end).*diff_x;
    c = x(2:end).^2;
    d = y(2:end).^2;
    instantaneous_frequency = factor * ((a-b)./(c+d));
    % Insert leading 0 in return-vector to maintain size
    instantaneous_frequency = [0 instantaneous_frequency];
end

তারপরে বার্নার আরও তিনটি সূত্র দিয়েছেন যার নাম তিনি "তাত্ক্ষণিক ফ্রিকোয়েন্সি আনুমানিকতা" রেখেছেন:

9(টি)=12πটিarctan[এক্স(টি)Y(টি+ +টি)একটি-এক্স(টি+ +টি)Y(টি)এক্স(টি)এক্স(টি+ +টি)+ +Y(টি)Y(টি+ +টি)]

function[instantaneous_frequency] = f9(analytic_signal, Fs, T)
    x = real(analytic_signal);
    y = imag(analytic_signal);
    factor = Fs/(2*pi*T);
    a = x(1:end-T).*y(1+T:end);
    b = x(1+T:end).*y(1:end-T);
    c = x(1:end-T).*x(1+T:end);
    d = y(1:end-T).*y(1+T:end);
    instantaneous_frequency = factor.*atan((a-b)./(c+d));
    % Append 0 to return-vector to maintain size
    instantaneous_frequency = [instantaneous_frequency zeros(1,T)];
end

11(টি)=14πটিarctan[এক্স(টি-টি)Y(টি+ +টি)একটি-এক্স(টি+ +টি)Y(টি-টি)এক্স(টি-টি)এক্স(টি+ +টি)+ +Y(টি-টি)Y(টি+ +টি)]

function [instantaneous_frequency] = f11(analytic_signal, Fs, T)
    x = real(analytic_signal);
    y = imag(analytic_signal);
    factor = Fs/(4*pi*T);
    a = x(1:end-2*T).*y(1+2*T:end);
    b = x(1+2*T:end).*y(1:end-2*T);
    c = x(1:end-2*T).*x(1+2*T:end);
    d = y(1:end-2*T).*y(1+2*T:end);
    instantaneous_frequency = factor.*atan((a-b)./(c+d));
    % Append and insert 0s to maintain size
    instantaneous_frequency = [zeros(1,T) instantaneous_frequency zeros(1,T)];
end

14(টি)=2πটি[এক্স(টি)Y(টি+ +টি)একটি-এক্স(টি+ +টি)Y(টি)(এক্স(টি)+ +এক্স(টি+ +টি))2+ +(Y(টি)+ +Y(টি+ +টি))2]

function [instantaneous_frequency] = formula14(analytic_signal, Fs, T);
    x = real(analytic_signal);
    y = imag(analytic_signal);
    factor = 2*Fs/(pi*T);
    a = x(1:end-T).*y(1+T:end);
    b = x(1+T:end).*y(1:end-T);
    c = (x(1:end-T)+x(1+T:end)).^2;
    d = (y(1:end-T)+y(1+T:end)).^2;
    instantaneous_frequency = factor * ((a-b)./(c+d));
    % Append and insert 0s to maintain size
    instantaneous_frequency = [instantaneous_frequency zeros(1,T)];
end

সমস্ত 3 অনুমানের মধ্যে সূত্র টি টি Fs (T = Fs = 1000 = 1s) তে সেট করা হয়েছিল, যেমনটি কাগজে প্রস্তাবিত হয়েছিল।

এখন আমার প্রশ্নগুলি হ'ল:

  • সূত্রগুলি f2 এবং f3 খাঁটি চিপ সংকেতের জন্য একই ফলাফলটি দেয়। আমি মনে করি এটি ভাল, তারা যেমন গণনা করে। তিনটি অনুমানের পদ্ধতিটি একই রকম হয় না, এমনকি এমন কিছুও নয় যা এর কাছাকাছি থাকে! কেন এই রকম ক্ষেত্রে? (আমি আশা করি এটি কেবল প্রোগ্রামিং-বাগ নয় ...)
  • যদিও তারা একই ফেরত দেয়, বিশেষত চক্রান্তের শেষে তারা অনেকটা 'উইগল' করা শুরু করে । এর ব্যাখ্যা কী? আমি প্রথমে এলিয়াসিংয়ের মতো কিছু নিয়ে ভাবলাম, তবে সংকেতগুলির ফ্রিকোয়েন্সিয়ের তুলনায় আমার স্যাম্পলিং ফ্রিকোয়েন্সি বেশ বেশি, তাই আমি মনে করি এটি বাদ দেওয়া যেতে পারে।
  • কমপক্ষে f2 এবং f3 খাঁটি চিপ সিগন্যালটিতে উপযুক্ত বলে মনে হয়, তবে সিগন্যালে একাধিক ফ্রিকোয়েন্সি আসে, তবে f2 এবং f3 সহ সমস্ত পদ্ধতি ভয়ঙ্কর ব্যর্থ বলে মনে হয়। বাস্তবে সিগন্যালে একাধিক ফ্রিকোয়েন্সি থাকা সবসময় ক্ষেত্রে হয়। তাহলে কীভাবে একজন (তত বেশি বা কম) সঠিক তাত্ক্ষণিক ফ্রিকোয়েন্সি পেতে পারেন?

    • যখন আমি একাধিক ফ্রিকোয়েন্সি সংকেত উপস্থিত হয় তখন আমি কী প্রত্যাশা করব তা আসলে আমি জানি না। গণনাটি একটি নির্দিষ্ট সময়ের জন্য একটি সংখ্যা ফেরত দেয়, সুতরাং এখানে যখন আরও বেশি ফ্রিকোয়েন্সি উপস্থিত থাকে তখন এটি কী করা উচিত? সমস্ত ফ্রিকোয়েন্সিগুলির গড় বা এরকম কিছু ফিরিয়ে দিন?
  • এবং আমার সম্ভবত সবচেয়ে গুরুত্বপূর্ণ প্রশ্ন হ'ল এটি কীভাবে বাস্তব এবং বিশদযুক্ত সফ্টওয়্যারটিতে পরিচালিত হয়? ধরা যাক আমি ১. s৫ এস তে সংশোধিত সিগন্যালের তাত্ক্ষণিক ফ্রিকোয়েন্সি জানতে চাই এবং আমি 'ভাগ্যবান' হতে পারার চেয়ে আমি পদ্ধতি f2 বেছে নিয়েছি এবং সম্ভবত [উত্তর] সম্ভবত 6 এর কাছাকাছি একটি নম্বর পেয়েছি যা সম্ভবত সঠিক উত্তর, বা আমি এর পাশের কয়েকটি ফলাফল আমার ফলাফলগুলি বাছাই করুন এবং হঠাৎ আমি কিছু তারযুক্ত হয়ে উঠি, উচ্চতর পথে, ফলাফল, কারণ দুর্ভাগ্যক্রমে আমি স্পাইকের একটি মান বাছাই করেছি। কীভাবে এটি পরিচালনা করা যায়? গড় বা এমনকি আরও ভাল একটি মিডিয়া ফিল্টার সহ পোস্টপ্রসেসিংয়ের মাধ্যমে? আমি মনে করি এমনকি এটি সম্ভবত খুব কঠিন হতে পারে বিশেষত এমন অঞ্চলে যেখানে অনেকগুলি স্পাইক একে অপরের পাশে থাকে।

এবং একটি শেষ, এতটা গুরুত্বপূর্ণ প্রশ্ন নয় যে কেন আমি তাত্ক্ষণিক ফ্রিকোয়েন্সিগুলিতে সন্ধান করি তা বেশিরভাগ কাগজপত্রগুলি ভূগোলের ক্ষেত্র থেকে, বিশেষত ভূমিকম্পের মতো ভূমিকম্প সংক্রান্ত ঘটনা গণনার ক্ষেত্রে। বার্নের কাগজও এটিকে উদাহরণ হিসাবে গ্রহণ করে। তাত্ক্ষণিক ফ্রিকোয়েন্সি কি অনেক ক্ষেত্রে আকর্ষণীয় নয়?

এটি এখনও অবধি, আমি প্রতিটি জবাবের জন্য অত্যন্ত কৃতজ্ঞ, বিশেষত যখন কেউ আমাকে কীভাবে এটি একটি বাস্তব সফ্টওয়্যার প্রকল্পে প্রয়োগ করতে হয় তার জন্য টিপস দেয় ;)

দয়া, প্যাট্রিক

উত্তর:


4

সত্যই কোনও উত্তর নয় তবে সহায়ক হতে পারে: ব্যক্তিগতভাবে আমি দেখেছি যে তাত্ক্ষণিক ফ্রিকোয়েন্সি ধারণাটি কেবল পর্যাপ্ত সংকীর্ণ ব্যান্ড সংকেতের জন্য কার্যকর is

দুটি স্থির সাইন ওয়েভের সহজ উদাহরণ বিবেচনা করুন, 100Hz এবং 934Hz বলুন। এক্ষেত্রে আপনি অবশ্যই তাত্ক্ষণিক ফ্রিকোয়েন্সি সংজ্ঞায়িত এবং গণনা করতে পারেন (আপনি যেভাবেই চান) তবে ফলাফল কী হওয়া উচিত? তাত্ক্ষণিক ফ্রিকোয়েন্সিতে কী কী সম্ভব অন্তর্দৃষ্টি বা বৈশিষ্ট্য থাকতে পারে যা সংকেত সম্পর্কে অর্থপূর্ণ কিছু বলতে পারে? একইসাথে একাধিক ফ্রিকোয়েন্সি রয়েছে এমন সংকেতগুলিতে তাত্ক্ষণিক ফ্রিকোয়েন্সি ধারণা প্রয়োগ করা, খুব বেশি অর্থবোধ করে না।

এজন্য আপনি সুইপ + সাইন এর জন্য ঝাড়ু তবে অদ্ভুত বক্ররেখার জন্য শালীন ফলাফল পান। আপনি উইগলসকে সুইপের একটি উচ্চতর অংশ দেখার কারণও এটি। সিগন্যালের ব্যান্ডউইদথ এটিতে একটি একক ফ্রিকোয়েন্সি নম্বর নির্ধারণ করতে খুব বেশি হয়ে যায় এবং ফলস্বরূপ চারপাশে লাফ দেয়।


এখনও পর্যন্ত ইঙ্গিতটির জন্য ধন্যবাদ, এবং আমি এই মন্তব্যটি একটি ভাল পয়েন্ট তোলে বলে মনে করি। তবে আমি আশ্চর্য হয়েছি কেন "খাঁটি চিপ সিগন্যাল" এর তাত্ক্ষণিক পর্বের গণনা 20Hz এর উপরে গেলে সমস্যা হয় trouble এখনও নির্ধারণ করার জন্য একটি মাত্র ফ্রিকোয়েন্সি রয়েছে present
Muuh

// তাত্ক্ষণিক ফ্রিকোয়েন্সি ধারণাটি কেবলমাত্র সংকীর্ণ ব্যান্ড সংকেতের জন্য কার্যকর //// ------ হ্যাঁ, একক AM'd এবং FM'd সাইনোসয়েডের মতো।
রবার্ট ব্রিস্টো-জনসন

4

কমপক্ষে f2 এবং f3 খাঁটি চিপ সিগন্যালটিতে উপযুক্ত বলে মনে হয়, তবে সিগন্যালে একাধিক ফ্রিকোয়েন্সি আসে, তবে f2 এবং f3 সহ সমস্ত পদ্ধতি ভয়ঙ্কর ব্যর্থ বলে মনে হয়। বাস্তবে সিগন্যালে একাধিক ফ্রিকোয়েন্সি থাকা সবসময় ক্ষেত্রে হয়। তাহলে কীভাবে একজন (তত বেশি বা কম) সঠিক তাত্ক্ষণিক ফ্রিকোয়েন্সি পেতে পারেন?

হিলমার যেমন পরামর্শ দিয়েছেন, হিলবার্ট ট্রান্সফর্ম (বা "অ্যানালিটিক সিগন্যাল") পদ্ধতি প্রশস্ত ব্যান্ডে কাজ করে না কারণ একাধিক ফ্রিকোয়েন্সি উপাদান রয়েছে। আপনি কেবল এই পদ্ধতিটি করতে পারেন একক সাইনোসয়েডাল উপাদান হিসাবে করতে পারেন।

সুতরাং, অ্যানালিটিক সিগন্যাল পদ্ধতির সাহায্যে আপনি যা করতে চান তা হ'ল এই পরিচয়টি ব্যবহার করা:

arctanতোমার দর্শন লগ করা-arctanবনাম=arctan(তোমার দর্শন লগ করা-বনাম1+ +তোমার দর্শন লগ করাবনাম)

যদি |তোমার দর্শন লগ করা-বনাম| যথেষ্ট পরিমাণে ছোট, যা আপনি বার্নারের সংগ্রহ করতে পারেন "9"সূত্র থেকে।

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


1

বাহ, কি বিশাল প্রশ্ন। আমি প্রথমে অতি-গুরুত্বপূর্ণ প্রশ্নের উত্তর দিতে যাচ্ছি:

এবং একটি শেষ, এতটা গুরুত্বপূর্ণ প্রশ্ন নয় যে কেন আমি তাত্ক্ষণিক ফ্রিকোয়েন্সিগুলিতে সন্ধান করি তা বেশিরভাগ কাগজপত্রগুলি ভূগোলের ক্ষেত্র থেকে, বিশেষত ভূমিকম্পের মতো ভূমিকম্প সংক্রান্ত ঘটনা গণনার ক্ষেত্রে। বার্নের কাগজও এটিকে উদাহরণ হিসাবে গ্রহণ করে। তাত্ক্ষণিক ফ্রিকোয়েন্সি কি অনেক ক্ষেত্রে আকর্ষণীয় নয়?

কারণটি হ'ল সিসমোগ্রাফিক সিস্টেম "ভাইব্রোসিস" তেল শিল্পে ভূমিকম্প জরিপ করতে ব্যবহৃত হয়। আমি যে ট্রাকগুলিকে সংঘবদ্ধ করেছি তার সাথে প্রায় 5 হার্জ থেকে প্রায় 90 হার্জ হ'ল এবং চিপ সিগন্যালগুলি তৈরি করা যেতে পারে। তেল শিল্পে প্রচুর অর্থ রয়েছে এবং এই সংকেতগুলি থেকে প্রাপ্ত রিটার্ন প্রক্রিয়াকরণ খুব, খুব লাভজনক হতে পারে। অতএব, তাত্ক্ষণিক ফ্রিকোয়েন্সি কৌশলগুলি সহ অনেকগুলি এই জাতীয় সংকেত বিশ্লেষণ করতে বহু ঘন্টা ব্যয় করেছে।


আপনার আরও গুরুত্বপূর্ণ প্রশ্ন হিসাবে: সাধারণত, গাণিতিক পার্থক্য করা এবং পৃথক সময় সংকেতগুলিতে খিলানগুলি গণনা করা একটি খারাপ কাজটিএম। এটি কারণ কারণ "বৃত্তাকার গাণিতিক" (একে একে ভেক্টর পাটিগণিত) ব্যবহার করে পৃথক সময়ের ফ্রিকোয়েন্সি অনুমানের গণনা করা দরকার।

এই কাগজটি দেখুন।

উন্নত পদ্ধতির প্রয়োগ এখানে যেমন বাস্তবায়িত হয়েছে "ফেজ ওয়েটেড এভারার্স" । বা মাতলাব সরাসরি লিঙ্ক জন্য এখানে


1

সত্যের এক বছর পরে উত্তর দেওয়ার জন্য দুঃখিত, তবে এই বিষয়টিতে নিবন্ধগুলি অনুসন্ধান করার সময় আমি এই পোস্টটি জুড়ে হোঁচট খেয়েছি। আপনার প্রশ্নগুলি "তাত্ক্ষণিক ফ্রিকোয়েন্সি" এর বিস্তৃত মতবিরোধ এবং ব্যাখ্যাগুলির প্রতিফলন করে যা শুরু থেকেই এই ক্ষেত্রটিকে জর্জরিত করে চলেছে। এখানে অসংখ্য উত্তর হিসাবে অসংখ্য লোক আপনাকে বলবে যে আইএফ কেবল "সরুবন্ধ" বা "মনো-উপাদান" সংকেতের ক্ষেত্রে প্রযোজ্য। আসলে, এটি সত্য নয়: কখনও কখনও হিলবার্ট ট্রান্সফর্ম দ্বারা প্রাপ্ত আইএফ ব্রডব্যান্ড এবং / বা "মাল্টি-উপাদান" সংকেতের জন্য পুরোপুরি ভাল আচরণ করে। একটি পরিমাণ যা প্রস্তাব করা হয়েছে যে এই সমস্যাগুলির মধ্যে অনেকগুলি এড়ানো যায় তা হ'ল "ওয়েটড এভারেজ তাত্ক্ষণিক ফ্রিকোয়েন্সি (ডাব্লুএআইএফ)", যা স্পেকট্রোগ্রাম ব্যবহার করে মাপা যায়।

জে অ্যাকোস্টে লফলিন দেখুন। SOC। আমি, জানুয়ারী, 1999. আইএফ এবং সাধারণ ভুল ধারণা সম্পর্কে অন্যান্য ভাল কাগজপত্রগুলি হলেন পিকিনবোনো (আইইইই ট্রান্স। সিগ। প্রোক।, মার্চ 1997) এবং ভাকম্যান (আইইইই ট্রান্স। সিগ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.