How to remove NaN in rows and columns of excel data set in matlab?
8 次查看(过去 30 天)
显示 更早的评论
Hi, I have the excel dataset of 50*48 matrix but it is having some NaN values also? I want to remove the NaN values from the matrix without loss of data.
Thank you in advance.
2 个评论
采纳的回答
Image Analyst
2018-9-19
You can use isnan() to identify nan locations and then build a cell array with nulls there. If m is your matrix (untested code):
[rows, columns] = size(m);
nanLocations = isnan(m);
ca = cell(rows, columns); % Initialize cell array.
for row = 1 : rows
for col = 1 : columns
if ~nanLocations(row, col)
ca{row, col} = m(row, col); % Only fill cell if it's not nan.
end
end
end
xlswrite(filename, ca);
3 个评论
Bryan Tan
2020-9-29
Hello Image Analyst, is there a way to make every rows after NaN as row 1 and the average all the row 1?
I have 3 rows of NaN, but I have numbers after that. So after every 3rd NaN, I want to make it as row 1, so I can average each row 1.
For example the first data has no NaN before it:
1
2
3
NaN
NaN
NaN
4
5
6
10
NaN
NaN
NaN
7
8
9
So the output average should be:
4
5
6
10
Thank you. My discussion topic is here:
https://au.mathworks.com/matlabcentral/answers/601879-averaging-and-interpolating-random-number-of-rows-of-data
Image Analyst
2020-9-29
Yes, try this:
badRows = isnan(ca{:, 1}); % Find nans in column 1.
ca = ca(~badRows, :); % Extract all rows except the bad rows.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 NaNs 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!