加了一行全是NaN的测试数据
程序如下:
clear all;clc;close all;
x = ...
[nan,nan,nan,1,nan,21, 12,nan, 21;
nan, 2, 15,1,nan,20,nan,nan,nan;
nan,nan,nan,1,nan,23,nan,nan,nan;
nan,nan,nan,nan,nan,nan,nan,nan,nan;];
idx = [3, 6, 9]; % 指定列
col = x(:,idx); % 将指定列从矩阵X中截取出来
colNum = length(idx); % 指定列的数目为3
table = []; % 用于记录结果的表
for i = 1:size(x,1)
flag = 0; % 默认为0,如果发现非空数则置为1
for j = colNum:-1:1 % 从每行后面开始遍历
if (~isnan( col(i,j) )) % 如果该元素不是NaN则记录到table中
table = [table; i idx(j) col(i,j)];
flag = 1;
break; % 发现了非空值后则不再从后往前遍历,立即跳出循环,开始遍历下一行
end
end
if flag == 0
disp(strcat('第',num2str(i),'行指定列全是NaN'));
end
end
table
结果如下
第4 行指定列全是NaN
table =
1 9 21
2 6 20
3 6 23
table中的数据意思是:
第1行的第9列数值为21,符合要求
第2行的第6列数值为20,符合要求
。。。


雷达卡



[em23][em23],回答的非常细致也解决了我的问题,不过我最终采用的是定位比较的办法,没有通过遍历,似乎会简单点
京公网安备 11010802022788号







