How to create more cells within a cell in a cell array?
2 次查看(过去 30 天)
显示 更早的评论
I have a cell array which only consists of numeric values. Hence, there are only numeric values in one cell. However, I need to change some of this values to strings. I tried to do so but I ended up with "NaN"s instead of my string value. I'm guessing the only way to approach this is for all values in a cell to be stored in their own 1 x 1 cell array. So a cell array within a cell array? This is the code used to create the cell array.
lat = coordinates(:,2); % x coordinates
lon = coordinates(:,3); % y coordinates
% create nested for loop
% create nested for loop
i_vector=103.6:(1/75):104;
j_vector=1.25:(1/120):1.5;
stns=cell(length(i_vector),length(j_vector)); % 31 x 31 cell array
for i = 1:(length(i_vector)-1)
% you can't access element end+1
for j = 1:(length(j_vector)-1)
% index = logical indexing vector
index = (lat > i_vector(i)) ...
& (lat < i_vector(i+1)) ...
& (lon > j_vector(j)) ...
& (lon < j_vector(j+1)) ;
stns{i,j} = coordinates(index,1); % stn number
end
end


So for example, all the values in stns{21,8} and all other cells should be stored in a 1 x 1 cell array right. How do I achieve this?
0 个评论
回答(1 个)
Guillaume
2017-6-13
编辑:Guillaume
2017-6-13
Notwithstanding that I need to change some of these values to strings sounds very iffy (an arbitrary mix of numbers and strings is not a good idea), you can simply convert a matrix into a cell array with num2cell, so change your code to:
stns{i,j} = num2cell(coordinates(index,1)); % stn number
Note that it will not create a 1x1 cell array but an mxn cell array (same size as the matrix) where each cell contains a 1x1 matrix (a scalar). Individual cells can then be changed to strings if desired.
But again, mixing numbers and strings arbitrarily does not sound like a good idea. What exactly are you trying to achieve?
0 个评论
另请参阅
类别
在 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!