MATLAB Answers

Spline question,more then 1 samplerate

1 ビュー (過去 30 日間)
m j
m j 2020 年 1 月 19 日
コメント済み: Kaashyap Pappu 2020 年 1 月 22 日
Im trying to spline 2 different samplerates to desired samplerate and I get a tiny error.The 2 samplerates are 50kHz,200kHz and desired samplerate is 300kHz.
%first find lcm(least common multiple) of both samplerates along with new desired samplerate of 300kHz
%factor = lcm(allSamplerates,newSamplerate);
factor = lcm([50000,200000],300000);
%factor = 600000
%find ratio needed for spline to raise samplerate
upSamp = 50000/factor; %50kHz/600kHz = 0.08333
upSamp2 = 200000/factor; %200kHz/600kHz = 0.3333
%sample1 = 1 X 256 @ 50kHz (0.00512 milli seconds long) array
sample1 = s1; %s1 = 1:256
%determine spline variables for sample1
x = 1:size(sample1,2);
y = sample1(1,:);
tx = 1:upSamp:size(sample1,2);
%sample2 = 1 X 1024 @ 200kHz (0.00512 milli seconds long) array
sample2 = s2 %s2 = 1:1024
%determine spline variables for sample2
x = 1:size(sample2,2);
y = sample2(1,:);
tx = 1:upSamp2:size(sample2,2);
sNew1 = [];
sNew2 = [];
sNew1 = [spline(x,y,tx); sNew1];
sNew2 = [spline(x2,y2,tx2); sNew2];
sNew1 = 1 X 3061 array , the 50kHz array splined to a 600kHz array
sNew2 = 1 X 3070 array , the 200kHz array splined to a 600kHz array
Both arrays are very close to 0.00512 milli seconds but arnt exact. Am I missing something? Because I was under the impression by using the LCM(least common multiple) of all samplerates. Arrays should both be same size. I know I could just pad the arrays so thery're the same size. The size of the arrays are only off by a very small margin. But just curious if im doing something wrong?Also after I plan on downsampling both arrays to 300kHz but had this minor error.
Thanks

回答 (1 件)

Kaashyap Pappu
Kaashyap Pappu 2020 年 1 月 22 日
This could be due to the digital representation of the ‘upSamp’ values. These values are recurring decimals, but due to the digital word length, which are truncated.
For instance, considering the value is 0.33333…, but is digitized to 0.333. If 10000 samples are generated using both values, the original value should produce 3333.3 sample points in an ideal case, but would only produce 33300 samples.
Further information on this can be found here and in the Documentation . The first comment in the first link mentions why this behavior is observed. The documentation elaborates how MATLAB stores these variables.
Hope this helps!
  1 件のコメント
Kaashyap Pappu
Kaashyap Pappu 2020 年 1 月 22 日
More information can be found in this thread:
https://in.mathworks.com/matlabcentral/answers/41877-matlab-floating-point-errors

サインインしてコメントする。

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by