File Output format not in Hex in Designer, but is in .m file output

2 visualizaciones (últimos 30 días)
I am using Matlab 2019a Designer to dump some values to a text file. If I run the .m file on the command line (like a normal Matlab function), it outputs the data in hex format, as expected.
If I use the designer app and dump the data, it saves the data in decimal format. How can I get the output of my data to be in hex format like the .m file? Thanks!
Here is my code snippet:
% Format the coefficients in .mem format
Nd = Nf/Nl; % Word depth of memory for each vector
fd = fopen(fn, 'w');
fprintf(fd, '// SHAPE vector ROM for %s, contains %d vectors, each %d samples\n', band, K, Nf);
for k = 1 : K
for n = 0 : Nd-1
fprintf(fd, '@%04x ', Nd*(k-1)+n);
for m = Nl-1 : -2 : 1
data = xq(Nl*n+m+1,k)*pow2(3*Qc) + xi(Nl*n+m+1,k)*pow2(2*Qc) + xq(Nl*n+m,k)*pow2(Qc) + xi(Nl*n+m,k);
fprintf(fd, '%09x', data);
end
fprintf(fd, '\n');
end
end
fclose(fd);
  4 comentarios
Walter Roberson
Walter Roberson el 14 de Sept. de 2023
As an experiment, try
fprintf(fd, '%09x', round(data));
Scotty Mac
Scotty Mac el 14 de Sept. de 2023
Editada: Scotty Mac el 14 de Sept. de 2023
That almost fixed my issue. It is now outputting hex values, but the line lengths vary incorrectly....
In the original .m command line output, each line should be 288 bits, but now they are vary in lengths.
Here is a sample of the original output:
Now, an example of the same inputs, but an output of the Designer processed file (using same code as above):
After the rounding experiment above, the output looks like (closer to being correct, but not a match):

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 14 de Sept. de 2023
Editada: Walter Roberson el 14 de Sept. de 2023
reading off of your tooltip and converting:
format long g
g = hex2num('422ffbed66dbfd86')
g =
68685312877.9952
Not an integer.
The problem is not with output facilities: the problem is that somehow you are calculating differently.
  3 comentarios
Scotty Mac
Scotty Mac el 14 de Sept. de 2023
Editada: Scotty Mac el 14 de Sept. de 2023
@Walter Roberson Thanks for the direction. I think it might have to do with how my inputs are ingested into the code. My inputs into the .m file are an array in the form of:
[5700e6, 4750e6, 4950e6]
For the GUI, my inputs are via an entry field and then multipled like:
x1 = str2double(app.EditField_Freq1.Value);
x1 = x1 * 10e5;
-- Then combine all x1,x2,x3 into an array.
array_x = [x1, x2, x3];
Should I be using str2num instead to more closly match the 5000e6 notation?
Scotty Mac
Scotty Mac el 14 de Sept. de 2023
Editada: Scotty Mac el 14 de Sept. de 2023
I will start a new question, since my output question has been answered and my problem is different issue.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by