我有一个包含这些条目的txt
文件,我想知道如何从第二列获取数值,直到矩阵中的最后一列和单元格数组中的第一列。
我已尝试使用导入数据和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
答案 0 :(得分:1)
这可以根据您提供的文本样本为您提供所需的内容。
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以获取有关阅读特殊格式数据的更多信息
答案 1 :(得分:0)
你试过xlsread吗?它创建了一个数字数组和两个非数字数组。
[N,T,R]=xlsread('yourfilename.txt')
但您的数据不是以逗号分隔的。它看起来像是使用逗号来表示小数点。这个数组有7列还是4列?因为我在美国,所以我假设你有配对坐标,逗号是一种分隔符,而空格是第二个。
所以这里是克鲁吉的东西,但它有效。这是一个丑陋的黑客,但它确实有效。
%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')
如果您希望这些逗号是小数点,那么这是一个不同的问题。
答案 2 :(得分:0)
这个功能应该可以解决问题。它会读取您的文件并根据您的模式进行扫描。然后,将第一列放在单元格数组中,将其他列放在矩阵中。
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