একটি তরঙ্গের ফ্রিকোয়েন্সি এবং সময়কাল নির্ধারণ করা


11

আমি একটি ফ্রিজ থেকে তাপমাত্রার ডেটা সংগ্রহ করছি। তথ্যগুলি একটি তরঙ্গের মতো দেখাচ্ছে। আমি তরঙ্গের সময়কাল এবং ফ্রিকোয়েন্সি নির্ধারণ করতে চাই (যাতে রেফ্রিজারেটরে পরিবর্তনগুলি কার্যকর হয় কিনা তা আমি পরিমাপ করতে পারি)।

আমি আর ব্যবহার করছি, এবং আমার মনে হয় ডেটাতে আমার একটি এফএফটি ব্যবহার করা দরকার, তবে সেখান থেকে কোথায় যাবেন তা আমি নিশ্চিত নই। আমি আর আর সিগন্যাল বিশ্লেষণে খুব নতুন, সুতরাং যে কোনও সহায়তা প্রশংসিত হবে!

আমি যে তরঙ্গটি তৈরি করছি তা এখানে:

আমার waveেউ

এখানে এখন পর্যন্ত আমার আর কোডটি রয়েছে:

require(graphics)
library(DBI)
library(RSQLite)

drv <- dbDriver("SQLite")
conn <- dbConnect(drv, dbname = "s.sqlite3")

query <- function(con, query) {
  rs <- dbSendQuery(con, query)
  data <- fetch(rs, n = -1)
  dbClearResult(rs)
  data
}

box <- query(conn, "
SELECT id,
       humidity / 10.0 as humidity,
       temp / 10.0 as temp,
       ambient_temp / 10.0 as ambient_temp,
       ambient_humidity / 10.0 as ambient_humidity,
       created_at
FROM measurements ORDER BY id DESC LIMIT 3600
")

box$x <- as.POSIXct(box$created_at, tz = "UTC")

box$x_n <- box$temp - mean(box$temp)
png(filename = "normalized.png", height = 750, width = 1000, bg = "white")
plot(box$x, box$x_n, type="l")

# Pad the de-meaned signal so the length is 10 * 3600
N_fft  <- 3600 * 10
padded <- c(box$x_n, seq(0, 0, length= (N_fft - length(box$x_n))))
X_f    <- fft(padded)
PSD    <- 10 * log10(abs(X_f) ** 2)

png(filename = "PSD.png", height = 750, width = 1000, bg = "white")
plot(PSD, type="line")

zoom <- PSD[1:300]

png(filename = "zoom.png", height = 750, width = 1000, bg = "white")
plot(zoom, type="l")

# Find the index with the highest point on the left half
index <- which(PSD == max(PSD[1:length(PSD) / 2]))

# Mark it in green on the zoomed in graph
abline(v = index, col="green")

f_s     <- 0.5 # sample rate in Hz
wave_hz <- index * (f_s / N_fft)
print(1 / (wave_hz * 60))

আমি SQLite ডাটাবেস সহ আর কোড পোস্ট করেছেন এখানে

এখানে নরমালাইজড গ্রাফের একটি প্লট রয়েছে (গড় সরানো সহ):

সাধারণ গ্রাফ

এ পর্যন্ত সব ঠিকই. বর্ণালী ঘনত্বের প্লটটি এখানে:

বর্ণালী ঘনত্ব

তারপরে আমরা প্লটের বাম দিকে জুম বাড়িয়ে সবুজ রেখার সাথে সর্বোচ্চ সূচক (যা 70) চিহ্নিত করব:

বর্ণালী প্লটে জুম ইন করুন

শেষ পর্যন্ত আমরা তরঙ্গের ফ্রিকোয়েন্সি গণনা করি। এই তরঙ্গটি খুব ধীর গতির, সুতরাং আমরা এটিকে চক্র প্রতি মিনিটে রূপান্তর করি এবং 17,4286 এর মানটি মুদ্রণ করি।

এখানে অন্য কেউ চেষ্টা করতে চাইলে ট্যাব সীমিত ফরমেটে আমার ডেটা এখানে ।

সাহায্যের জন্য ধন্যবাদ! এই সমস্যাটি ছিল (আমার জন্য) তবে আমার খুব ভাল সময় ছিল!


হারুন, আমি মনে করি যে এখানে সবচেয়ে ভাল জিনিসটি আপনার জন্য একটি ড্রপবক্সে আপনার ডেটা ফাইলের (কোনও পাঠ্য বা কিছু হিসাবে) একটি লিঙ্ক স্থাপন করা, যাতে আমি এটি ডাউনলোড করে উত্তরটি দিতে পারি can অন্যথায় অনেক পিছনে পিছনে যেতে হবে। আমি খুব বাম প্রান্তে সংখ্যাগুলি তৈরি করতে পারি না। :-) (এছাড়াও আপনাকে নমুনার হার দিন - এটি আপনি কত ঘন ঘন তাপমাত্রা পড়ছেন)।
স্পেসি

ওহ দুঃখিত. ডেটাতে ডিগ্রি সি তাপমাত্রা থাকে, আমি গ্রাফের জন্য ডিগ্রি এফ এ রূপান্তর করি। এটি সঠিক ডেটা যদিও (এটি "টেম্পর" কলাম)।
অ্যারন প্যাটারসন

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

পোস্টিং, কোড, ডেটা, প্লট এবং গিথাবের লিঙ্কের জন্য +1।
নিবোট

@ ড্যানিয়েলআরহিকস এই বিশেষ ক্ষেত্রে, আমি এটি বিবেচনা করি না বলে মনে করি না, তবে হ্যাঁ, এফএফটি আপনাকে তাদের সবার গড় দেবে, যেখানে আমরা যদি শূন্য-ক্রসিংয়ের মতো কিছু করি, তবে আমরা প্রতিটি চক্রের সময়কাল (ফ্রিকোয়েন্সি) পরিমাপ করব, এবং তারপরে আমরা নির্ধারণ করতে পারি যে আমরা গড়, মধ্যমা, মোড ইত্যাদি গ্রহণ করতে চাই কিনা ভাল পয়েন্ট!
স্পেসি

উত্তর:


7

আপনি সেখানে চলছে আকর্ষণীয় প্রকল্প! :-)

সিগন্যাল বিশ্লেষণ পিওওভি থেকে, এটি আসলে একটি সহজ প্রশ্ন - এবং হ্যাঁ, আপনি ঠিক বলেছেন যে আপনি এই ফ্রিকোয়েন্সি অনুমানের সমস্যার জন্য এফএফটি ব্যবহার করবেন।

Rএকটি2+ +আমিমিএকটি2

তারপরে, খুব সহজভাবে, আপনার পিএসডি যেখানে বসে আছে তার সর্বাধিক সন্ধান করুন। এই সর্বোচ্চটির অ্যাবসিসা আপনার ফ্রিকোয়েন্সি অনুসারে।

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

সম্পাদনা করুন:

আসুন আপনার সিগন্যালটি আমলে নিই। আমি এটি ডি-মিন্ট করার পরে, এটি দেখতে এটির মতো দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

এক্স[এন]

এনটি=10*3600=36000।

গুলি=0.5এইচz- র

এক্স[এন]এক্স()1010(|এক্স()|2)

এখানে চিত্র বর্ণনা লিখুন

দেখতে পাবেন এটি কীভাবে প্রতিসম হয়। যদি আপনি শেষ অর্ধটিকে উপেক্ষা করেন এবং কেবল প্রথমার্ধের দিকে তাকান এবং আপনার মধ্যে জুম করেন তবে এটি দেখতে পাবেন:

এখানে চিত্র বর্ণনা লিখুন

সুতরাং আপনার সূচকে 70 শীর্ষে রয়েছে! কিন্তু বাস্তব ফ্রিকোয়েন্সি পদে সূচক 70 কী? আপনি এখানে নিজের ফ্রিকোয়েন্সি রেজোলিউশন চান। এটি গণনা করার জন্য, আমরা কেবল গ্রহণ করিএফগুলিএনটি=1,3889-২005এইচz- র0*1,3889-২005=0এইচz- র1*1,3889-২005=1,3889-২005এইচz- র70*1,3889-২005=9,7222-২004এইচz- র

1(9,7222-২004)*60=17.14


অ্যারোন প্যাটারসন আমি পোস্টটি সম্পাদনা করেছি, দয়া করে দেখুন। এছাড়াও, আপনি সরাসরি আপনার মূল পোস্টে আপনার ছবি যুক্ত করতে পারেন। :-)। আপনি যে পিএসডি ফলাফল পেয়েছেন তার একটি চিত্র যুক্ত করুন।
স্পেসি

1
যদি ফ্রিকোয়েন্সি এফএফটি ফলাফলের বিনয়ের মধ্যে থেকে যায় তবে ঠিক সঠিক নয়।
হটপাউ

@ হটপাউ ২ সে কারণেই আমি ওপিকে সতর্ক করে দিয়েছিলাম যে আমি সাধারণ দৃষ্টিভঙ্গি দিচ্ছি এবং কেন আমাকে প্লটটি দেখার দরকার। সর্বোপরি, আমি অতিরিক্ত ক্যাভ্যাট যোগ করতে সম্পাদনা করেছি।
স্পেসি

1
@ অ্যারোনপ্যাটারসন কোনও সমস্যা নেই, সাহায্য করে খুশি। যতদূর বই হিসাবে, রিচার্ড লাইন্সকে "ডিএসপি বোঝার জন্য" দেখুন - এটি শুরু করার জন্য একটি দ্রুততম বই।
স্পেসি

1
1.3এক্স10-5

4

এই মসৃণ এবং স্থির তরঙ্গাকারের জন্য, কিছু গড় প্রান্তিক মানের ধনাত্মক চলমান ক্রসিংয়ের মধ্যে নমুনা পয়েন্ট গণনা আপনাকে একটি সময়ের অনুমান দেয়। আরও গড় অনুমান বা কোনও প্রবণতা সনাক্ত করতে বেশ কয়েকটি প্রান্তিক ক্রসিং পিরিয়ডগুলি দেখুন।


3

জটিল কিছু করার দরকার নেই: কেবল তরঙ্গকারীর শিখরের মধ্যে সময়কাল পরিমাপ করুন। এই সময়কাল। ফ্রিকোয়েন্সি সময়কাল দ্বারা বিভক্ত মাত্র 1।

2 ঘন্টা ধরে প্রায় 8 চক্র সহ, ফ্রিকোয়েন্সি প্রতি ঘন্টা 4 চক্র বা প্রায় 1 মেগাহার্টজ হয়।


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