aboutsummaryrefslogtreecommitdiff
path: root/octave/sample_clock_offset.m
diff options
context:
space:
mode:
authorAuthor Name <[email protected]>2023-07-07 12:20:59 +0930
committerDavid Rowe <[email protected]>2023-07-07 12:29:06 +0930
commitac7c48b4dee99d4c772f133d70d8d1b38262fcd2 (patch)
treea2d0ace57a9c0e2e5b611c4987f6fed1b38b81e7 /octave/sample_clock_offset.m
shallow zip-file copy from codec2 e9d726bf20
Diffstat (limited to 'octave/sample_clock_offset.m')
-rw-r--r--octave/sample_clock_offset.m21
1 files changed, 21 insertions, 0 deletions
diff --git a/octave/sample_clock_offset.m b/octave/sample_clock_offset.m
new file mode 100644
index 0000000..5169178
--- /dev/null
+++ b/octave/sample_clock_offset.m
@@ -0,0 +1,21 @@
+% sample_clock_offset.m
+%
+% David Rowe June 2017
+%
+% To simulate a sample clock offset we resample by a small amount
+% using linear interpolation
+
+function rx = sample_clock_offset(tx, sample_clock_offset_ppm)
+ tin=1;
+ tout=1;
+ rx = zeros(1,length(tx));
+ while tin < length(tx)
+ t1 = floor(tin);
+ t2 = ceil(tin);
+ f = tin - t1;
+ rx(tout) = (1-f)*tx(t1) + f*tx(t2);
+ tout += 1;
+ tin += 1+sample_clock_offset_ppm/1E6;
+ end
+end
+