How can I change the Nan values in a matrix by the values in cells array?
3 views (last 30 days)
Show older comments
f=[1 nan 3 4 5 6;nan 3 nan 5 6 7;3 nan 5 6 nan 8; 4 5 6 7 8 nan;5 6 nan 8 9 0;6 7 8 nan 0 2]
% I want to replace each nan values by one of the following data
data=[8 0 5 9 7 3 6 4]
Input_variables = num2cell(data)
Input_variables{:}
% it works till here. Then, when I want to have the replacment:
f(Input_variables{:})
% I got this error:
Index in position 1 exceeds array bounds. Index must not exceed 6.
0 Comments
Accepted Answer
VBBV
on 1 Nov 2022
f(pt) = cell2mat(data)
Use cell2mat
6 Comments
VBBV
on 1 Nov 2022
Edited: VBBV
on 1 Nov 2022
f(pt) = cell2mat(double(var))
Ok. That's because the above input is incorrect since the cell2mat takes cell arrays as input and converts to numeric array . But double(var) is not a cell array data type. It's already numeric,hence it's shows error when it encounters incorrect brace such as ( or [ Cell arrays begin with '{'. e.g. in this line
f={1 nan 3 4 5 6;nan 3 nan 5 6 7;3 nan 5 6 nan 8; 4 5 6 7 8 nan;5 6 nan 8 9 0;6 7 8 nan 0 2};
Hope this clears your doubt
More Answers (1)
Akira Agata
on 1 Nov 2022
If you want to replace NaN by the given value in linear index order, the following will be one possible solution:
% Given matrix
f = [...
1 nan 3 4 5 6;...
nan 3 nan 5 6 7;...
3 nan 5 6 nan 8;...
4 5 6 7 8 nan;...
5 6 nan 8 9 0;...
6 7 8 nan 0 2];
% Given data value
data = [8 0 5 9 7 3 6 4];
% Linear index of NaNs in the matrix f
pt = find(isnan(f));
% Replace NaN by data value
f(pt) = data;
% Show the result
disp(f)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!