将txt文件读取到matrix和Matlab

将txt文件读取到matrix和Matlab,matlab,Matlab,我有一个包含这些条目的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 你试过xlsread吗?它由一

我有一个包含这些条目的
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

你试过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')

如果您希望这些逗号是小数点,那么这是一个不同的问题。

此函数应该可以实现这一点。它读取您的文件并根据您的模式进行扫描。然后,将第一列放入单元格数组,将其他列放入矩阵

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

这将根据您提供的文本示例为您提供所需的内容

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

查找有关读取特殊格式数据的更多信息

请提供您尝试的代码。非常感谢你的帮助。不幸的是我没有工作。xlsread似乎只与excel一起工作,而不与txt一起工作。这里逗号用于小数点,而不是分隔符。这里有4列6行。显然这是一个巨大的txt文件。原来的那个有很多行。我会尝试在我的文件中实现你的代码。非常感谢,老兄。再说一次,这是一个又大又丑的克鲁格,但它应该能用。也许不仅仅是修复逗号,这可以转换成CSV,并在中间。这是沃思威尔。非常感谢,艾蒂安。你的密码和Duck发给我的一样。也非常感谢你的帮助。这是可以理解的。