Writing cells into a .dat file?
    10 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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 件のコメント
採用された回答
  Chetan Bhavsar
      
 2023 年 8 月 11 日
        
      編集済み: Chetan Bhavsar
      
 2023 年 8 月 11 日
  
      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 件のコメント
その他の回答 (0 件)
参考
カテゴリ
				Help Center および File Exchange で Text Data Preparation についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


