在Matlab中检索Xlsx或csv

时间:2014-05-03 12:41:07

标签: excel matlab csv

我在.xlsx中有点数据,我想阅读并将它们存储在 Matlab 中的p数组中。这些点仅是xyz 3D坐标,因此理解了三列而不是prdfined行。如果我需要快速检索,我试图检索.xlsx并且其响应时间很慢并返回一个空数组,那么我如何从.csv.xlsx检索它们。可能以换位形式存储它们并将其转置回来。 Scren Shot of my excel file

我的代码:.Xls阅读

 A = xlsread('data.xlsx')

输出:

A =

     []

我的代码:.CSV阅读

 M = csvread('data.csv')

输出:

   Error using dlmread (line 139)
Mismatch between file and format string.
Trouble reading number from file (row 2u, field 1u) ==> ;\n
Error in csvread (line 48)
    m=dlmread(filename, ',', r, c);

积分设置1:

 -191.2442  187.7193    1.0000;
 -155.2995  152.6316    2.0000;
 -182.0276  104.6784    3.0000;
 -148.8479   84.7953    4.0000;

积分集2:

 -142.3963   83.6257    5.0000;
 -102.7650  133.9181    6.0000;
  -56.6820  164.3275    7.0000;
  -30.8756  124.5614    8.0000;
  -23.5023  118.7135   7.0000;
   -9.6774  110.5263   6.0000;
   26.2673   90.6433   5.0000;
  -42.8571   -6.4327   4.0000;
   10.5991    7.6023   3.0000;

积分3:

  -73.2719   84.7953    9.0000;
 -137.7880   15.7895   10.0000;
  -92.6267  -30.9942    9.0000;
  -42.8571   19.2982    8.0000;
   41.0138  -15.7895   4.0000;
   71.4286  -41.5205   6.0000;
   90.7834  -14.6199   5.0000;

2 个答案:

答案 0 :(得分:1)

查看使用importdata的稍微扭曲的那个是否适合你 -

C1 = importdata(file1) %%// file1 is your CSV filename
t1 = regexp(C1,'\s','Split')
t2 = horzcat(t1{:})
t2 = strrep(t2,';','')
M = cellfun(@str2num,reshape(t2(~strcmp(t2,'')),3,[])')

编辑1:此案例假设您有一个CSV文件,其中所有Point Sets已聚集在一起但逐一({{}之间没有空格1}}及其数据以及Point Sets的结尾与下一个Point Set 的到达声明之间。

因此,对于问题中的给定数据,输入CSV文件看起来像这样 -

Point Set

请注意,代码的结果将是数组的结构。

<强>代码

Points Set 1:
 -191.2442  187.7193    1.0000;
 -155.2995  152.6316    2.0000;
 -182.0276  104.6784    3.0000;
 -148.8479   84.7953    4.0000;
Points Set 2:
 -142.3963   83.6257    5.0000;
 -102.7650  133.9181    6.0000;
  -56.6820  164.3275    7.0000;
  -30.8756  124.5614    8.0000;
  -23.5023  118.7135   7.0000;
   -9.6774  110.5263   6.0000;
   26.2673   90.6433   5.0000;
  -42.8571   -6.4327   4.0000;
   10.5991    7.6023   3.0000;
Points Set 3:
  -73.2719   84.7953    9.0000;
 -137.7880   15.7895   10.0000;
  -92.6267  -30.9942    9.0000;
  -42.8571   19.2982    8.0000;
   41.0138  -15.7895   4.0000;
   71.4286  -41.5205   6.0000;
   90.7834  -14.6199   5.0000;

答案 1 :(得分:0)

您正在使用行分隔符;\n(分号+新行)。我不知道任何函数理解这种格式。使用texstscan可能是最好的选择:

fid=fopen(...)
M=cell2mat(textscan(line,'%f,%f,%f;\n'));
fclose(fid);