如何删除只有一些列中缺less值的整行?

我需要使用matlab编程删除excel文件中的空列的所有行。 我有一个Excel文件内的多个工作表,数据格式如下:

1 2 3 4 5 2 3 4 5 5 6 7 8 9 12 13 14 15 16 6 2 8 4 1 2 3 5 7 9 8 34 3 3 2 7 8 4 

在上面的示例中,我在第2,5和7行(第5列中的所有空单元格)中都有空单元格。 我需要find这些空值,并删除包含这些值的行,即我只需要删除第2,5和7行。最后的输出应该是像下面的Excel文件

 1 2 3 4 5 5 6 7 8 9 12 13 14 15 16 1 2 3 5 7 3 2 7 8 4 

我看了一些解决scheme,全部为零的行被删除,但在这种情况下,我只有在第5列的空单元格,但我需要删除包含空值的行。 任何帮助表示赞赏。

如果您使用XLSREAD来读取数据,它将自动填充具有NaN值的空单元格。 因此,可以使用ANY和ISNAN函数删除包含NaN值的行,并使用XLSWRITE将新数据保存到文件中,如下所示:

 data = xlsread('oldfile.xls'); xlswrite('newfile.xls', data(~any(isnan(data), 2), :)); 

因为你的数据matrix将是一个维(8,5)所有的空单元格将是0.所以你可以做

 min_data=min(data,[],2); %find the minimum of the rows data(find(min_data==0),:)=[]; %find the rows of zeros and delete them 

以下是如何使用ActiveX直接检测和删除空单元格的行:

 e = actxserver ('Excel.Application'); %# open Activex server ewb = e.Workbooks.Open('c:\test\test.xlsx'); %# open file (enter full path) eur = ewb.ActiveSheet.UsedRange; %# lets simplify using active sheet data = cell2mat(eur.Value); %# get numeric data idx = find(any(isnan(data),2))'; %# find rows with empty (or text) cells for k=idx(end:-1:1) eur.Rows.Item(k).Delete; %# delete entire row from the last one end ewb.Save %# save to the same file ewb.Close(false) e.Quit 

它保存相同的修改文件,所以确保你有一个备份,而testing!