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

时间:2015-02-25 15:54:08

标签: arrays matlab for-loop char indices

在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个条目。

非常感谢!

1 个答案:

答案 0 :(得分:2)

要真正回答这个问题,请在评论中使用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