Export a matrix variable "losslessly" as a .txt file
3 次查看(过去 30 天)
显示 更早的评论
Apparently very simple issue but I was not able to find the answer anywhere!
The variable is a matrix and I wish to save it losslessly i.e. without any approximations as a .txt file.
EDIT: To clear up confusion, I have attached a sensor to my USRP B210. I want to process the data and then save the data matrix in a .txt file. I have attached how the data looks like.
4 个评论
Stephen23
2020-7-12
"I want to process the data and then save the data matrix in a .txt file."
Sure, just use any of the text saving routines, e.g. dlmwrite, writematrix, etc.
"I have attached how the data looks like"
Your screenshot shows data displayed in the MATLAB Variable Viewer. How numeric data are displayed is not the same as what is stored in memory, so it is unclear how this helps us understand what you want.
"To clear up confusion"
I asked what you mean by "lossless" and you have not yet provided any answer.
I also gave a simple example and asked how it should be printed, a response would be useful.
回答(1 个)
Walter Roberson
2020-7-11
If it is numeric, then dlmwrite() with '%.16g'
If I recall correctly, save -double uses 15 digits instead of 16, but you could experiment to be sure, since save -double is easier to code.
3 个评论
Walter Roberson
2020-7-12
ramp = [double(time),double(real(amplitude)),double(imag(amplitude))];
save Compiled_data.txt ramp -ascii
This will generate 3 columns; when you read the data back in you would need to splice the real and imaginary back together.
If you really need "two columns" then you could fprintf() something that tried to put the real and imaginary together with an "i" after the second part, but that gets a bit risky: too much chance that a space would be emitted along the way, leaving you with three columns in some rows.
So if you really need "two columns" then the easiest would be to define columns in terms of comma delimited or something like that instead of whitespace delimited. But note that if you do that, that such as csv would not be compatible with Excel: you need an add-on to Excel to handle complex values, and the add-on handles them by constructing formulas for each cell, something like =COMPLEX(real,imaginary) .
ramp = [double(time),double(real(amplitude)),double(imag(amplitude))];
fid = fopen('Compiled_data.txt', 'wt');
fprintf(fid, '%.6f,%d%+di\n', ramp.'); %transpose is important
fclose(fid);
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Text Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!