【问题标题】:Concertinaing cell array in nested for loop Matlab嵌套for循环Matlab中的手风琴式单元阵列
【发布时间】:2014-07-13 02:04:33
【问题描述】:

我在Matlab中工作,其中嵌套的for循环用于收集数据并存储在单元格数组中,但是我想收集数据并且内部循环在同一个单元格中进一步收集根据其位置排列。但是,我尝试过,但它首先给出外部循环值索引,然后是内部循环,我想在同一个单元格数组中 cat。 是否有任何 vectorization 技巧或其他解决我的案例的方法? A 我的单元格数组,我想通过对我很重要的各个索引将两个循环值存储在 A 中。 我的代码:

for i=1:10
A{i}=i;
k=i;
for j=-270:90:270
if (j~=0)
A{i+k}=[j];
end
k=k+1;
end
end 

实际输出: 第 1 至 14 列

 [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]    [-180]    [-270]    [-180]    [-270]

  Columns 15 through 26

    [-180]    [-270]    [-180]    [-270]    [-180]    [-270]    [-180]    [-90]    [180]    [90]    [180]    [270]

所需的输出:

 [1]  [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]  [2] [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]    [3] [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]    [4] [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]    [5]  [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]   [6]   [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]  [7]  [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]   [8]  [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]   [9]  [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270]   [10]  [-270 ] [-180 ]  [-90]    [ 90]   [180]   [270] 

【问题讨论】:

    标签: arrays matlab for-loop cell nested-loops


    【解决方案1】:
    J = -270:90:270;
    J = nonzeros(J); %// avoid zeros in J
    N = numel(J);
    for i = 1:10
        ii = (N+1)*(i-1)+1;
        A{ii} = i;
        for n = 1:N
            A{ii+n} = J(n);
        end
    end
    

    【讨论】:

    • @AhsanAli 更正答案
    • 如果我想将内循环加倍/三倍呢?即再次重复A{ii+n} = J(n);
    • @AhsanAli 那将是一个不同的问题。你原来的帖子没有这样说
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多