需求及实现
直接上例子要说明:比如现在我们有一个b的序列,我们想按照c规定的顺序重排:
实现命令:b(:,c)
意思:b的所有列元素(第二个参数),按照c给定的顺序重排
b = [7 14 -10 12];
c = [2 3 1 4];
b1cp = b(:,c)
效果:
b1cp =
14 -10 7 12
上面的例子是行向量按照指定的顺序进行重排,同理可以得到列向量按照指定顺序重排:
列元素如下,排列顺序c不变:
实现命令:b(c,:)
意思:b的所有行元素(第二个参数),按照c给定的顺序重排
b = [7;14;-10;12];
c = [2 3 1 4];
b2cp = b(c,:)
效果:
b2cp =
14
-10
7
12
补充1:如果不用上面的简便写法,用循环如何实现
b = [7 14 -10 12];
c = [2 3 1 4];
b_result = zeros(1,4);
for n = 1:length(b)
b_result(n) = b( c(n) );
end
b_result
补充2:现在需求有所改变,c是对b各个元素调整到指定位置。
意思说明:b的第1个元素调到第2的位置,b的第2个元素调到第3的位置,b的第3个元素调到第1的位置,b的第4个元素调到第4的位置。该需求最终结果为:
没有快速方法,只能直接用循环来写:
b = [7 14 -10 12];
c = [2 3 1 4];
b_result = zeros(1,4);
for n = 1:length(b)
b_result( c(n) ) = b(n); % 这里稍有区别
end
b_result
效果:
b_result =
-10 7 14 12