How to delete elements from cell arrays?
12 次查看(过去 30 天)
显示 更早的评论
Hi, I have a cell array(1x316) which contains 316 double
numeric arrays of various sizes like 74845x1,81032x1,55434x1 and so on.
I want to delete data values from each array cells which is greater than 140 and save it in a new cell array.
Format of my data looks like below:-
inst_speed_all_user_rome.mat(cell array)->speed_kmh(variable)->
1 2 3 ... ....316(total 316 cells of arrays)
{74845x1 double},{81032x1 double},{87351x1 double},.....
sample of one array inside one of those 316 cells :
speed_kmh{1,1}-> {74845x1}= 44.889 28.445 0 156 33.46 ........
Now, for above scenario,i need to delete the data 156(which is greater than 140 here) likewise i want to delete all data values > 140 from all arrays.
Initially i have stored cell array in s1 which is a 1x1 struct with one field ->speed_kmh of size 1x316.
Please help me out on this.
This is my code but i am stuck.
%%store cell array in struct s1
s1 =load('inst_speed_usr_rome.mat');
%%delete the values greater than 140 from cells
l = s1.speed_kmh{:};
to_delete = false(size(l));
for i=1:length(s1.speed_kmh)
if (s1.speed_kmh(i)>140)
to_delete(i) = true;
end
end
l(to_delete) = [];
2 个评论
Image Analyst
2016-3-30
So you have a cell array with 316 cells. And inside each of those 316 cells is another cell array? Or is a regular numerical array inside the cells? Please read the FAQ http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F before you answer.
采纳的回答
Jan
2016-3-31
Perhaps:
s1 = load('inst_speed_usr_rome.mat');
for k = 1:numel(s1.speed_kmh)
v = s1.speed_kmh{k};
s1.speed_kmh{k} = v(v <= 140);
end
更多回答(2 个)
Walter Roberson
2016-3-31
cellfun(@(C) struct('speed_kmh', C.speed_kmh(C.speed_kmh<=140)), s1, 'Uniform', 0)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!