在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个条目。
非常感谢!
答案 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