আমি একটি ফ্রিজ থেকে তাপমাত্রার ডেটা সংগ্রহ করছি। তথ্যগুলি একটি তরঙ্গের মতো দেখাচ্ছে। আমি তরঙ্গের সময়কাল এবং ফ্রিকোয়েন্সি নির্ধারণ করতে চাই (যাতে রেফ্রিজারেটরে পরিবর্তনগুলি কার্যকর হয় কিনা তা আমি পরিমাপ করতে পারি)।
আমি আর ব্যবহার করছি, এবং আমার মনে হয় ডেটাতে আমার একটি এফএফটি ব্যবহার করা দরকার, তবে সেখান থেকে কোথায় যাবেন তা আমি নিশ্চিত নই। আমি আর আর সিগন্যাল বিশ্লেষণে খুব নতুন, সুতরাং যে কোনও সহায়তা প্রশংসিত হবে!
আমি যে তরঙ্গটি তৈরি করছি তা এখানে:
এখানে এখন পর্যন্ত আমার আর কোডটি রয়েছে:
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 এর মানটি মুদ্রণ করি।
এখানে অন্য কেউ চেষ্টা করতে চাইলে ট্যাব সীমিত ফরমেটে আমার ডেটা এখানে ।
সাহায্যের জন্য ধন্যবাদ! এই সমস্যাটি ছিল (আমার জন্য) তবে আমার খুব ভাল সময় ছিল!