无for循环的交替

3次查看(最近30天)
JamJan
JamJan 2019年10月15日
我有两个向量要交替变换
A = [1 2 3 4 5 6 7 8 9 10]
B = [0.5 0.2 0.4 0.8 0.9]
我希望得到以下输出(最好没有for循环)
输出= [1 0.5 2 0.2 3 0.4 4 0.8 5 0.9 6 7 8 9 10]
怎么做呢?
谢谢!

答案(3)

斯蒂芬。
斯蒂芬。 2019年10月15日
编辑:斯蒂芬。 2019年10月15日
>> N = min(numel(A),numel(B));
> > V =[重塑(((1:N); B (1: N)], 1, []), (N + 1:结束),B (N + 1:结束)]
V =
1 0.5 2 0.2 3 0.4 4 0.8 5 0.9 6 7 8 9 10
1评论
j·亚历克斯。李
j·亚历克斯。李 2019年10月15日
不错的…我喜欢没有看到明显相反的路径的时候……我从“重塑”这个空洞的论点中学到了一件新东西

登录评论。


乔斯(10584)
乔斯(10584) 2019年10月15日
%排序技巧
A = [1 2 3 4 5 6 7 8 9 10]
B = [0.5 0.2 0.4 0.8 0.9]
C = [a b];
[~,ix] = sort([1:numel(A) 1:numel(B)]))
C = C(第九)

j·亚历克斯。李
j·亚历克斯。李 2019年10月15日
这是一种可能性:如果a和B保证是相同的长度(你的例子不是)和行向量,你可以这样做
N =长度(A)
输出=重塑(((,),B ()): ', 2 * N, 1)
如果长度不相同,可以对较短的向量进行nan-pad,稍后再删除。

标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!