在Matlab中查找xlsx行的特定列表

时间:2015-06-10 10:00:30

标签: excel matlab

任何人都可以帮我在Matlab中从Excel工作表中查找特定列吗?我的文件看起来有点像这样:

% First set of data

x   y

1   2
2   4
3   6
4   8
5   10
6   12
7   14
8   16
9   18
10  20

% Second set of data    
% Empty line

1   1.5
2   3
3   4.5
4   6
5   7.5
6   9
7   10.5
8   12
9   13.5
10  15

% Third set of data 
% Empty line

1   0.5
2   1
3   1.5
4   2
5   2.5
6   3
7   3.5
8   4
9   4.5
10  5

我想让Matlab做的是找到: - 对于每组数据(单独),找到这些数据并绘制在同一图中。

所以我希望Matlab在空行后自动找到新的设置。我现在遇到的一个问题是,我为一个数据集使用了大约1500行,而下一个数据集则略小一些。所以我可以想象使用类似的东西:

x=xlsread('Filename.xlsx','A1:AN');

1 个答案:

答案 0 :(得分:0)

您可以尝试这样做:

  

我假设所有数据集之间没有任何空行,而每组数据后面只有一行空行。

%// read all set of data
%// you might additionally add range if you want to avoid non-numeric data such as string
a = xlsread('Book1.xlsx');

%// add NaN values at the end if not already present
if ~isnan(a(end,1))
  a(end+1,:)=nan;
end

%// detect NaN rows
idx2=find(isnan(a(:,1)));

%// detect start rows for each set of data
idx1=[1 idx2(1:end-1)+1];

%// find number of data sets
n=numel(idx1);

%// create corresponding cell array
out=cell(n,1);

%// put each set of data inside a cell
for k=1:n
  out{k}=a(idx1(k):idx2(k)-1,:);
end

%// plot each set of data separately 
%// using 'hold all' instead of 'hold on' gives different colors for each data set
hold all
cellfun(@(x) plot(x(:,1),x(:,2)),out);
hold off