How can I change the Nan values in a matrix by the values in cells array?
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
VBBV
2022-11-1
f(pt) = cell2mat(data)
Use cell2mat
6 个评论
VBBV
2022-11-1
编辑:VBBV
2022-11-1
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
更多回答(1 个)
Akira Agata
2022-11-1
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)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!