假设我有一个50x1的单元格(比如Q),其中包含不同尺寸的列矩阵(比如1568936x1,88x1,5040x1)等 失去价值不是问题。我需要单元格内的所有矩阵可以被所述数字整除(比如500),所以像1568500x1,5000x1跳过88x1等。
目前我有:
z=cell(length(Q),1)
for p=1:length(z)
n=length(Q{p})
for w=1:length(z)
if n-mod(length(Q{w}),500)<500
w=w+1;
else
o=length(Q{w}-mod(length(Q{w}),500));
for k=1:length(z)
z=Q{w}((1:o));
end
end
end
end
但是当我到达88x1矩阵时,它会抛出尺寸超出错误,尽管我认为我已经用if条件覆盖了它应该跳过矩阵然后移动到下一个单元格。
答案 0 :(得分:1)
这应该可以正常工作:
Z
给定起始向量(缩短以避免过度重载),最终输出>> cellfun(@numel,Z)
ans =
50
150
0
150
100
为:
Q = {
rand(58,1);
rand(168,1);
rand(33,1);
rand(199,1);
rand(100,1)
};
K = 50;
Z = cellfun(@(x)x(1:(floor(numel(x)/K)*K)),Q,'UniformOutput',false);
如果你想要一个较短的单行版本,这里有一个:
{{1}}