Writing cells into a .dat file?
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ali Almakhmari
el 11 de Ag. de 2023
I have a .mat file that looks like this:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1455447/image.png)
A movement in the row-driection (down) means a new line in the .dat file and a movement in the column direction (right) indicates that between each cell is a comma. So the final file would look something like this (dont mind the spacing in front of each line):
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1455452/image.png)
I tried using the writecell command to wirte this .dat file from the .mat file but I failed. I am hoping someone can help me achieve it. I attached the .mat file as a reference.
0 comentarios
Respuesta aceptada
C B
el 11 de Ag. de 2023
Editada: C B
el 11 de Ag. de 2023
Let me know if this is what you wanted and if anything is not clear in
load('files.mat')
numRows = size(files, 1);
concatenatedRows = cell(numRows, 1);
startcomma = false;
for i = 1:numRows
row = files(i, :);
rowStr = cellfun(@convertToString, row, 'UniformOutput', false);
rowStr(cellfun('isempty', rowStr)) = [];
if strcmp(rowStr{1}(1), '$')
startcomma = true;
end
if startcomma
if ~strcmp(rowStr{1}(1), '$')
if strcmp(rowStr{end}, '$')
concatenatedRows{i} = strjoin(rowStr, ',');
concatenatedRows{i} = [' ' , concatenatedRows{i}];
else
concatenatedRows{i} = [strjoin(rowStr, ','), ','];
concatenatedRows{i} = [' ' , concatenatedRows{i}];
end
else
concatenatedRows{i} = strjoin(rowStr, ' ');
concatenatedRows{i} = [' ' , concatenatedRows{i}];
end
else
concatenatedRows{i} = strjoin(rowStr, ' ');
end
if strcmp(rowStr{end}, '$')
startcomma = false;
end
end
filename = 'output.dat';
fid = fopen(filename, 'w');
for i = 1:numRows
fprintf(fid, '%s\n', concatenatedRows{i});
end
fclose(fid);
function out = convertToString(in)
if isnumeric(in)
out = num2str(in);
elseif islogical(in)
out = char(string(in));
else
out = char(in);
end
end
2 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!