Convolution not working with 'uint16'
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
William Greenway
am 31 Jan. 2022
Beantwortet: Star Strider
am 31 Jan. 2022
I'm importing some .dat data into MATLAB to perform a discrete time convolution on a 'uint16' number.
I'm using the fread and conv functions to calculate a convolution. I find that when adding the 'uint16' variable to fread the convolution gives really small values.
test1 = [0.25 , 0.25 , 0.25 , 0.25];
% Answer gives very small convolution
x = fopen('in.dat');
A = fread(x, 'uint16');
conv(A,test1)
% Gives correct answer
z = fopen('in.dat');
C = fread(z);
v = nonzeros(C);
conv(v,test1)
Why does adding 'uint16' to the input produce the incorrect result? When looking at the difference between A and v, I cannot see any difference?
0 Kommentare
Akzeptierte Antwort
Star Strider
am 31 Jan. 2022
That likely has to do with the precision of the calculations. I would convert them to double, do the calculations, and then convert back to unit16.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!