【问题标题】:How do I extract value from for loop and group them uniformly如何从 for 循环中提取值并将它们统一分组
【发布时间】:2020-11-10 02:05:58
【问题描述】:

我正在尝试将 for 循环中的条目分成相等的部分。例如,我有一个运行高达 100 的 for 循环(这在我的实际代码中不是固定的),并且循环的前 4 个值是 1:4 应该保存在一个单元格/数组中,接下来的 4 个值保存在连续数组中,然后我想执行结果(单元格)。我尝试了一个 matlab 代码,但我不知道为什么所有值都保存在初始单元格中,并且前面的存储不明确。请给我一个解决方案。例如(我尝试了一个小数字)

function a=groupit(n)
counter=1;
x=0;
for i=1:n
    x=x+i;
    if mod(i,3)==0
        counter=counter+1;
    end
    a{counter,1}=x;
end
end

当我拨打groupit(10) 时,我收到以下restls:


> 4×1 cell array
> 
>     {[ 3]}
>     {[15]}
>     {[36]}
>     {[55]}

【问题讨论】:

  • 您的预期输出?如果它应该是一组行向量,那么您还需要更改 a 的第二个参数。

标签: matlab for-loop


【解决方案1】:

您不需要 for 循环即可获得所需的结果。以下将n 值划分为最大大小为m 的组:

function a = groupit(n, m)
p = floor(n/m)*m; % largest number divisible by m and smaller than n
a = mat2cell(1:p, 1, m*ones(1, p/m))';
if p<n
    a = [a; (p+1):n];
end
end

这样称呼:

X = groupit(10, 4)

clc
% displaying contents
disp('Contents:')
cellfun(@(x)disp(x), X, 'UniformOutput', false)

结果:

X = 

    [1x4 double]
    [1x4 double]
    [1x2 double]
  
Contents:  
     1     2     3     4  
     5     6     7     8  
     9    10

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 2023-03-23
    • 2020-05-16
    • 1970-01-01
    • 2019-05-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多