如何在matlab中完成字符串中两个元素的交换?

时间:2015-03-07 05:40:07

标签: matlab

我有一串英文字母,我想用第二个交换第一个元素,依此类推。我正在使用此代码:

for a = 1:25;
b= 1;
k(a)= k(a+b);
end

我不知道它是否是正确的方法。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:3)

这应该有效,假设数组的长度是均匀的。

k = 'abcdefghijklmnop'
temp = k;
k(1:2:end) = temp(2:2:end);
k(2:2:end) = temp(1:2:end)

我得到的结果是

k =
badcfehgjilknmpo

编辑:Luis Mendo提到了一个更好的方法:

k([1:2:end 2:2:end]) = k([2:2:end 1:2:end])

答案 1 :(得分:-1)

交换意味着第一个元素必须具有第二个元素的数据,第二个元素必须具有第一个数据。

在你的代码中,你为第一个元素分配了第二个元素的数据,但是你不应该反过来。

 i=0;
 k=[1,2,3,4,5,6,7,8,9,10];
 b=1;
 for a= 1:5
   t=k(a+i);
   k(a+i)=k(a+b+i);
   k(a+b+i)=t;
   i=i+1;
 end