Writing cells into a .dat file?
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a .mat file that looks like this:
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):
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 Kommentare
Akzeptierte Antwort
C B
am 11 Aug. 2023
Bearbeitet: C B
am 11 Aug. 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Environment and Settings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!