Convolution not working with 'uint16'
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
William Greenway
el 31 de En. de 2022
Respondida: Star Strider
el 31 de En. de 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 comentarios
Respuesta aceptada
Star Strider
el 31 de En. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Get Started with MATLAB en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!