如何在 Matlab 中将字符数组的偶数和奇数索引重新分配到一个新的较小字符数组中?
Posted
技术标签:
【中文标题】如何在 Matlab 中将字符数组的偶数和奇数索引重新分配到一个新的较小字符数组中?【英文标题】:How do I reassign even and odd indices of a character array into a new smaller character array in Matlab? 【发布时间】:2015-04-27 17:06:10 【问题描述】:在 matlab 中我有一个 32x1 的字符数组 A 这样
A = 'F1' 'F2' 'F3' 'F4' 'F5' 'F6' ... 'F32';
A = A';
现在我正在尝试对 A 执行以下操作。 对于 A 意义的每个偶数索引
A2, A4, A6...
我想将这些值分配给 16x1 字符数组 B,对于 A 的奇数索引,我想将这些值分配给不同的 16x1 数组 C。
我使用以下代码:
for i=1:32
if mod(i,2)==0
Bi = Ai;
else
Ci = Ai;
end
end
它可以工作,但只是部分因为它分配了正确的值 for 例如B2 and B4
但B1 and B3
中的值与B2 and B4
中的值相同。
谁能告诉我如何将字符数组的偶数和奇数索引重新分配到一个新的更小的字符数组中?我的问题是我要从 32x1 变成 16x1,我不确定如何避免额外的 16 个条目。
非常感谢!
【问题讨论】:
为什么不只是B = A(2:2:end); C = A(1:2:end);
?
在发布之前尝试过,但没有成功,正如@thewaywewalk 建议的deal
工作了!
【参考方案1】:
要真正回答这个问题,请在 cmets 中使用 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
Bjj = Aii;
else
Cjj = Aii;
end
end
【讨论】:
非常感谢,不知道deal
存在.. 现在我知道了!非常感谢以上是关于如何在 Matlab 中将字符数组的偶数和奇数索引重新分配到一个新的较小字符数组中?的主要内容,如果未能解决你的问题,请参考以下文章