2013-08-19 123 views
0

我正在读取一个.txt文件,当它读入matlab时,我得到了我的合适向量和所有内容,除了在每个数字的末尾都有分号。现在,我不确定在阅读文件时是否更好地纠正此错误,或者在阅读完文件后,是否可以用一些代码快速纠正它。不幸的是,我不知道如何解决这个问题。我正在做这样的事情。MATLAB:从所有矩阵元素中删除分号

for i = 1:100000 
    try 
     disp(strcat('ToF_ROI_XYZcoordinates_', num2str(i), '.txt')); 
     ToF_File_ID = fopen(strcat('ToF_ROI_XYZcoordinates_', num2str(i), '.txt')); 
     ToF_XYZ_Coordinates(i,:) = textscan(ToF_File_ID,'%s %s %s'); 
     fclose(ToF_File_ID); 

     disp(strcat('Navi_Endo_RefOrient_', num2str(i), '.txt')) 
     Navi_Orient_File_ID = fopen(strcat('Navi_Endo_RefOrient_', num2str(i), '.txt')); 
     Navi_Endo_RefOrient(i,:) = textscan(Navi_Orient_File_ID,'%s'); 
     fclose(Navi_Orient_File_ID); 

     disp(strcat('Navi_Endo_RefOffsetPosVec_', num2str(i), '.txt')) 
     Navi_Offset_File_ID = fopen(strcat('Navi_Endo_RefOffsetPosVec_', num2str(i), '.txt')); 
     Navi_Endo_RefOffsetPosVec(i,:) = textscan(Navi_Offset_File_ID,'%s'); 
     fclose(Navi_Offset_File_ID); 

    catch err 
     break 
    end 
end 

编辑:我的矩阵看起来是这样的,如果你感到困惑

[ 1; 2; 3; 4; ] 
| 5; 6; 7; 8; | 
| 9; 1; 2; 3; | 
[ 4; 5; 6; 7; ] 

,我希望它这样

[ 1 2 3 4 ] 
| 5 6 7 8 | 
| 9 1 2 3 | 
[ 4 5 6 7 ] 

从我的新变量,消除那些分号任何帮助会很好,谢谢!

+0

你能做矩阵A = A'的转置吗? – Zero

+0

嗯......我想你误解了我的矩阵。分号不是输入,它们是输出。所以它们是矩阵中的一个字符串。我需要完全删除该字符串。移调只会把它放在其他地方,每个矩阵元素仍然会在里面。 – spaderdabomb

+0

“ToF_ROI_XYZcoordinates_”,“ToF_ROI_XYZcoordinates_”和“Navi_Endo_RefOffsetPosVec_”.txt文件的示例内容是什么? – Marcin

回答

1

仍然有一些事情不清楚,但假设你生成这段代码的矩阵:

textscan(ToF_File_ID,'%s %s %s') 

如果要分析此摆脱semicolumns的,你可以把它变成这样:

strrep(textscan(ToF_File_ID,'%s %s %s'), ';', '') 
+1

我不确定'strrep'是否已经存在了很长一段时间,如果你的版本不支持它,可以用'regexprep'替换它' –

+1

你也可以使用'textscan'和'delimiter'选项,不再需要'strrep':'textscan(ToF_File_ID,'%s%s%s','delimiter',{'',';'}) ' –