簡體   English   中英

如何在MATLAB中將mxn矩陣轉換為逗號分隔的文本文件(每行為)?

[英]How to convert m x n matrix to (each row as) comma separted text file in MATLAB?

我有一個mxn值的.mat文件。 為簡單起見,假設我們有2行和3列:

2 4 6

2 1 4

我希望能夠將這些值從.mat文件導出到文本文件,但是,每行都具有.mat文件中的相應行,且每行中的值均以逗號分隔。 對於上面的示例,在txt文件中,它應類似於:

2,4,6

2,1,4

這是我到目前為止所做的:

gt1 = load('Benchmark\AAmpiidata\groundtruth.mat');
r = gt1.gTruth.LabelData{1,1}{1,1};
allOneString = sprintf('%.0f,', r(1,:));
allOneString = allOneString(1:end-1);% strip final comma
fid=fopen('allOneString.txt','w');
fprintf(fid,'%s',allOneString);
fclose(fid);true 

我可以根據需要從.mat文件中提取第一行。 我得到這個:

492,304,78,220

但是,我不知道如何從.mat文件中提取多行。 任何幫助將不勝感激!

PS在上面的代碼中,.mat文件gt1直接沒有值。 我需要的值(mxn)可使用gt1.gTruth.LabelData{1,1}{1,1}提取

根據您使用的MATLAB版本,有兩個答案。

答案1:對於MATLAB 2018及更早版本:

gt1 = load('Benchmark\AAmpiidata\groundtruth.mat');
r = gt1.gTruth.LabelData{1,1}{1,1};
dlmwrite('allOneString.txt',r)

答案2:對於MATLAB 2019(撰寫本文時為2019-a)

gt1 = load('Benchmark\AAmpiidata\groundtruth.mat');
r = gt1.gTruth.LabelData{1,1}{1,1};
writematrix(r,'allOneString.txt')

這是另一種方式,使用fprintf進行文件寫入,並使用strjoin生成格式字符串:

r = [2 4 6;2 1 4];
fid = fopen('allOneString.txt','w');
fprintf(fid, [strjoin(repmat({'%.0f'}, 1, size(r,2)), ',') '\n'], r.');
fclose(fid);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM