我有一個txt
文件與這些條目,我想知道如何從第二列獲取數值直到矩陣的最後一列和單元格的第一列陣列。閱讀一個txt文件矩陣和cellarray Matlab
我試過導入數據和fscanf
,我不明白髮生了什麼事情。
CP6 7,2 -2,7 6,6
P5 -5,8 -5,9 5,8
P6 5,8 -5,9 5,8
AF7 -5,0 7,2 3,6
AF8 5,0 7,2 3,6
FT7 -7,6 2,8 3,6
我有一個txt
文件與這些條目,我想知道如何從第二列獲取數值直到矩陣的最後一列和單元格的第一列陣列。閱讀一個txt文件矩陣和cellarray Matlab
我試過導入數據和fscanf
,我不明白髮生了什麼事情。
CP6 7,2 -2,7 6,6
P5 -5,8 -5,9 5,8
P6 5,8 -5,9 5,8
AF7 -5,0 7,2 3,6
AF8 5,0 7,2 3,6
FT7 -7,6 2,8 3,6
這個函數應該有效。它讀取您的文件並根據您的模式進行掃描。然後,把第一列放在一個單元格陣列中,其他的放在一個矩陣中。
function [ C1,A ] = scan_your_txt_file(filename)
fid = fopen(filename,'rt');
C = textscan(fid, '%s %d,%d %d,%d %d,%d');
fclose(fid);
C1 = C{1};
A = cell2mat(C(2:size(C,2)));
end
艾蒂安。你的代碼與Duck發給我的相似。也非常感謝你的幫助。這是可以理解的。 – Gohann
您是否嘗試過xlsread?它使數字數組和兩個非數字數組。
[N,T,R]=xlsread('yourfilename.txt')
但您的數據不是逗號分隔的。它看起來像使用逗號來表示小數點。這個數組有7列還是4列?因爲我在美國,所以我會假設你已經配對了座標,而逗號是一種分隔符,而空格是第二種。
所以這裏有一些klugy,但它的工作原理。這是一個嚴重的醜陋的黑客攻擊,但它有效。
%housekeeping
clc
%get name of raw file
d=dir('*22202740*.txt')
%translate from comma-as-decimal to period-as-decimal
fid = fopen(d(1).name,'r') %source
fid2= fopen('myout.txt','w+') %sink
while 1
tline = fgetl(fid); %read
if ~ischar(tline), break, end %end loop
fprintf(fid2,'%s\r\n',strrep(tline,',','.')) %write updated line to output
end
fclose(fid)
fclose(fid2)
%open, gulp, parse/store, close
fid3 = fopen('myout.txt','r');
C=textscan(fid3,'%s %f %f %f ');
fclose(fid3);
%measure waist size and height
[n,m]=size(C);
n=length(C{1});
%put in slightly more friendly form
temp=zeros(n,m);
for i=2:m
t0=C{i};
temp(:,i)=t0;
end
%write to excel
xlswrite('myout_22202740.xlsx',temp(:,2:end),['b1:' char(96+m) num2str(n)]);
xlswrite('myout_22202740.xlsx',C{1},['a1:a' num2str(n)])
%read from excel
[N,T,R]=xlsread('myout_22202740.xlsx')
如果你想這些逗號是小數點,那麼這是一個不同的問題。
EngrStudent代碼。非常感謝你的幫助。不幸的是我不工作。 xlsread似乎只適用於excel而不適用於txt。 – Gohann
如果用逗號分隔,則文本起作用。嗯。 – EngrStudent
是的工程師。在這裏使用逗號來表示小數點,而不是分隔符。所以這裏有4列和6行。顯然這是一個巨大的txt文件。原來的有很多行。我嘗試將你的代碼實現到我的文件中。非常感謝好友。 – Gohann
這應該根據您提供的文本樣本給你想要的。
fileID = fopen('x.txt'); %open file x.txt
m=textscan(fileID,'%s %d ,%d %d ,%d %d ,%d');
fclose(fileID); %close file
col1 = m{1,1}; %get first column into cell array col1
colRest = cell2mat(m(1,2:6)); %convert rest of columns into matrix colRest
查找textscan更多信息閱讀特殊格式的數據
鴨子。這是值得的。非常感謝。 – Gohann
提供您的你已經嘗試 – Dan