声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1840|回复: 10

[编程技巧] 请教一个数组合并的问题

[复制链接]
发表于 2008-4-23 15:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请教一个数组合并的问题,如数组work1[x1,x2——,xn],work2[y1,y2——,yn],现在要生成一个数组work3,work3中的数据为[x1,y1,x2,y2——,xn,yn],这可怎么生成,想了很久了,希望大家帮忙,谢谢!
回复
分享到:

使用道具 举报

发表于 2008-4-23 15:21 | 显示全部楼层
用For循环吧!别的命令就不知道了
发表于 2008-4-23 15:23 | 显示全部楼层
要想很久,没这么复杂吧?下面是解法一:

  1. >> A = [1,2,3,4];
  2. >> B = [-1,-2,-3,-4];
  3. >> C = zeros(1,size(B,2)+size(A,2));
  4. >> C(1:2:end) = A;
  5. >> C(2:2:end) = B
  6. C =
  7.      1    -1     2    -2     3    -3     4    -4
复制代码
解法二:没有想出来,放弃

[ 本帖最后由 eight 于 2008-4-23 16:04 编辑 ]

评分

1

查看全部评分

发表于 2008-4-24 08:42 | 显示全部楼层

回复 3楼 的帖子

解法二:
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

评分

1

查看全部评分

发表于 2008-4-24 10:26 | 显示全部楼层
原帖由 wwbeyondww 于 2008-4-24 08:42 发表
解法二:
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
不错不错,不过和我昨天想的不一样,我记得之前有个函数可以中间隔行补零的,可惜想不起来是什么函数
发表于 2008-4-24 12:18 | 显示全部楼层

回复 5楼 的帖子

哈哈,经你提醒,解法三:
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

评分

2

查看全部评分

发表于 2008-4-25 00:29 | 显示全部楼层
kron这个函数主要是用于做kronecker张量积,这么用第一次见,赞!
常规做法还是用reshape,不过可以小修改一下,对v7以上版本似乎无需规定其维数,用"[]"即可:
  1. c=reshape([A;B],1,[])
复制代码

评分

1

查看全部评分

发表于 2008-4-25 10:29 | 显示全部楼层
直接合并不行吗?
a=[1,2,3,4;1,2,3,4]
b=[1,2,3,4;1,2,3,4]
若行数相同用[a b]
ans =
     1     2     3     4     1     2     3     4
     1     2     3     4     1     2     3     4
若列数相同用[a;b]
ans =
     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4
发表于 2008-4-25 10:32 | 显示全部楼层
原帖由 shuihefeng 于 2008-4-25 10:29 发表
直接合并不行吗?
a=[1,2,3,4;1,2,3,4]
b=[1,2,3,4;1,2,3,4]
若行数相同用[a b]
ans =
     1     2     3     4     1     2     3     4
     1     2     3     4     1     2     3     4
若列数相同用[a ...


你没看明白楼主的要求啊
发表于 2008-4-25 11:23 | 显示全部楼层
不好意思,看错了.刚学的
发表于 2008-5-2 13:05 | 显示全部楼层

全是矩阵处理的高手啊!

学到很多技巧,试总结以上的方案:
-------------------------------------
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]);
--------------------------------------

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 21:07 , Processed in 0.062318 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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