如何在 Matlab 中将字符数组的偶数和奇数索引重新分配到新的较小字符数组中?

How do I reassign even and odd indices of a character array into a new smaller character array in Matlab?

在 matlab 中我有一个 32x1 字符数组 A 使得

A = {'F1' 'F2' 'F3' 'F4' 'F5' 'F6' ... 'F32'};
A = A';

现在我正在尝试对 A 执行以下操作。 对于 A 的每个偶数索引,意思是

A{2}, A{4}, A{6}...

我想将这些值分配给 16x1 字符数组 B,对于 A 的奇数索引,我想将这些值分配给不同的 16x1 数组 C。

我使用以下代码:

for i=1:32
 if mod(i,2)==0
   B{i} = A{i};
 else
   C{i} = A{i};
 end
end

它有效,但只是部分原因是它为例如分配了正确的值。 B{2} and B{4}B{1} and B{3} 中的值与 B{2} and B{4} 中的值相同。

谁能告诉我如何将字符数组的偶数和奇数索引重新分配到一个新的更小的字符数组中?我的问题是我要从 32x1 变成 16x1,我不确定如何避免额外的 16 个条目。

非常感谢!

要真正回答这个问题,请在评论中使用 Luis Mendo 的想法。您可以将它与deal结合起来以节省一行代码:

[B, C] = deal(A(2:2:end), A(1:2:end))

为了让你的循环工作,你需要第二个 运行 索引 jj:

A = {'F1' 'F2' 'F3' 'F4' 'F5' 'F6'};

for ii = 1:6
     jj = ceil(ii/2);
     if mod(ii,2)==0
        B{jj} = A{ii};
     else
        C{jj} = A{ii};
     end
end