爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4028|回复: 4

[参考资料] Matlab一维数组合并

[复制链接]

新浪微博达人勋

发表于 2013-7-28 20:45:54 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
以下是常见的数组合并,但是这里的算法都要求两个数组大小相等,
我在文章的最后写了一个code 能够实现大小不等的数组的合并

    1、一维数组直接合并
题目:
数组work1[x1,x2——,xn],work2[y1,y2——,yn],现在要生成一个数组work3,
work3中的数据为[x1,x2,x3--xn,y1,y2--yn];

合并方法:
直接将两个矩阵合并:
A = [1,2,3,4];
B = [-1,-2,-3,-4];
C = zeros(1,size(B,2)+size(A,2)); %这句可以不要;
C = [A, B];
2、一维数组交叉合并:
题目:
数组work1[x1,x2——,xn],work2[y1,y2——,yn],现在要生成一个数组work3,
work3中的数据为[x1,y1,x2,y2——,xn,yn];

合并方法一:
A = [1,2,3,4];
B = [-1,-2,-3,-4];
C = zeros(1,size(B,2)+size(A,2));
C(1:2:end) = A;
C(2:2:end) = B

C =
1 -1 2 -2 3 -3 4 -4

解法二:
A = [1,2,3,4];
B = [-1,-2,-3,-4];
C=[A' B']';
C=reshape(C, 1, length(A)+length(B));

C =
1 -1 2 -2 3 -3 4 -4
解法三:

对于解法二改进:

c=reshape([A;B],1,[]);

这里要注意,只能在v7以上的版本才能使用此法;

解法四:
A = [1,2,3,4];
B = [-1,-2,-3,-4];
C=kron(A,[1 0])+kron(B,[0 1]);

C =
1 -1 2 -2 3 -3 4 -4
很多技巧,试总结以上的方案:
-------------------------------------
A = [1,2,3,4];
B = [-1,-2,-3,-4];
----------------- 1 -----------------
C = zeros(1,size(B,2)+size(A,2));
C(1:2:end) = A;
C(2:2:end) = B;
C=C(:);
------------------2 -----------------
C=[A' B']';
C=reshape(C, 1, length(A)+length(B));
------------------3-------------------
c=reshape([A;B],1,[])
------------------4-------------------
C=kron(A,[1 0])+kron(B,[0 1]);
--------------------------------------


我的code
clc,clear
A = [ 1 2 3 4 5 6 ]
B = [ 10 20 30]
for k=1:length(B)
    c(2*k)=B(k);
end
for k=1:length(A)
    if k >length(A)*2
        c(k)=A(k);
    else
        c(k*2-1)=A(k);
    end
end
c(find(c==0))=[];
c
----------------------------------------------------------------

A =

     1     2     3     4     5     6


B =

    10    20    30


c =

  Columns 1 through 8

     1    10     2    20     3    30     4     5

  Column 9

     6

>>

评分

参与人数 2金钱 +22 贡献 +6 收起 理由
mofangbao + 8 + 2
Aires + 14 + 4

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-28 21:02:02 | 显示全部楼层
这个交叉的稍微有点复杂
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-28 21:17:33 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-7-28 21:17:55 | 显示全部楼层
又是那隻貓 发表于 2013-7-28 21:02
这个交叉的稍微有点复杂

还好吧。有很多代码有上千行的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-12-31 18:49:05 | 显示全部楼层
学习学习,感谢
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表