Delete a cell in an array chosen by a criterion?
2 次查看(过去 30 天)
显示 更早的评论
Dear all, I have a cell-array of 9*365. In each cell is a vector of 3*365. First I want to delete every 6th and 7th cell in each row. Then I want to delete them by a criterion in the vector. The third column in every vector stands for the trading volume of a stock. If all rows of this column are zero, then the cell should be deleted. How can I delete the cells? Thank you very much!
7 个评论
采纳的回答
Azzi Abdelmalek
2013-1-22
编辑:Azzi Abdelmalek
2013-1-22
% If your marices are 365x3
x(:,6:6:end)=[]; % x is your cell array
x(:,6:6:end)=[];
[n,m]=size(x);
for k=1:n
for l=1:m
v=x{k,l};
if ~any(v(:,3))
x{k,l}=[]
end
end
end
0 个评论
更多回答(1 个)
Andrei Bobrov
2013-1-22
years = 2002:2010; % 9 years
ndy = 337 + eomday(years,2); % days in years
data = cell(1,numel(years)); % create your cell-array
for jj = 1:numel(data)
data{jj} = cell(ndy(jj),1);
c = randperm(ndy(jj));
b = c(1:randi(20));
for ii = 1:ndy(jj)
k = randi([270,288]);
data{jj}{ii} = randi([40,1000],k,2);
if any(ismember(b,ii))
data{jj}{ii}(:,3) = 0;
else
data{jj}{ii}(:,3) = randi([40,1000],k,1);
end
end
end
% solution
for jj = 1:numel(years)
data{jj} = data{jj}...
(~ismember(weekday(datenum(years(jj),1,(1:ndy(jj))')),[1,7]));
for ii = 1:numel(data{jj})
if all(~data{jj}{ii}(:,3))
data{jj}{ii} = [];
end
end
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Transaction Cost Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!