Borrar filtros
Borrar filtros

Convolution not working with 'uint16'

2 visualizaciones (últimos 30 días)
William Greenway
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?

Respuesta aceptada

Star Strider
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.

Más respuestas (0)

Categorías

Más información sobre Logical 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!

Translated by