随机交换字符序列(Matlab)
Swap characters in sequence randomly (Matlab)
我有一个输入值是一组序列如下:
{ 'ABCDE'
'ABCD'
'ABE'
'ABCDE'
'ABD'
'ABCD'
'ABCDE' }
我尝试在 3 个随机序列中交换 'A' 和 'B',并保持其他序列不变。谁能有什么建议?
可能的解决方案
A={ 'ABCDE'
'ABCD'
'ABE'
'ABCDE'
'ABD'
'ABCD'
'ABCDE' };
N = numel(A);
for r = randperm(N,3)
A(r) = A{r}([2 1 3:end]);
end
或
for r = randperm(N,3)
A{r}(1:2) = A{r}([2 1]);
end
randperm(N,3)
从 1:N
中选择 3 个随机值
然后通过索引 [2 1 3:end]
我们可以交换第一个和第二个元素
如果您不想 for loop
而是有一个额外的数据转换步骤,从 cell
到 char
然后从 char
返回到 cell
,这将解决您的问题:
N = numel(A);
r = randperm(N,3);
A = char(A);
A(r,[1,2]) = A(r,[2,1]);
A = cellstr(A);
我有一个输入值是一组序列如下:
{ 'ABCDE'
'ABCD'
'ABE'
'ABCDE'
'ABD'
'ABCD'
'ABCDE' }
我尝试在 3 个随机序列中交换 'A' 和 'B',并保持其他序列不变。谁能有什么建议?
可能的解决方案
A={ 'ABCDE'
'ABCD'
'ABE'
'ABCDE'
'ABD'
'ABCD'
'ABCDE' };
N = numel(A);
for r = randperm(N,3)
A(r) = A{r}([2 1 3:end]);
end
或
for r = randperm(N,3)
A{r}(1:2) = A{r}([2 1]);
end
randperm(N,3)
从 1:N
然后通过索引 [2 1 3:end]
我们可以交换第一个和第二个元素
如果您不想 for loop
而是有一个额外的数据转换步骤,从 cell
到 char
然后从 char
返回到 cell
,这将解决您的问题:
N = numel(A);
r = randperm(N,3);
A = char(A);
A(r,[1,2]) = A(r,[2,1]);
A = cellstr(A);