【问题标题】:Intertwining 3 arrays in matlab / octave to get correct pattern在matlab / octave中交织3个数组以获得正确的模式
【发布时间】:2015-08-24 21:33:05
【问题描述】:

我知道我可以将 2 个数组通过

C = [A(:),B(:)].';   %'
D = C(:)

但是我如何才能将 3 个数组 与(来回摆动的模式)交织在一起,请参见下图,箭头显示了我试图获得的交织路径模式 (每个column 是一个数组)。此外,我试图获得的数字模式也在它旁边,在一个大列中。 请注意,数值仅为示例,以便于阅读。数值也可以是小数

我尝试了下面的代码,但模式不正确。

A=[1,2,3,4,5]
B=[10,20,30,40,50,60,70,80,90]
C=[100,200,300,400,500]

D = [A(:),B(:),C(:)].';   %'
E = D(:)

我在 D 数组中出现错误,因为 B 数组的大小比 A 和 C 大,但数字模式也不符合我想要得到的模式。

                 1
                10
               100
                 2
                20
               200
                 3
                30
               300
                 4
                40
               400
                 5
                50
               500
error: horizontal dimensions mismatch (5x1 vs 9x1)

我试图获取的 3 个数组的模式如下。

请注意,数值仅为示例,以便于阅读。数值也可以是小数

1
10
100
20
2
30
200
40
3
50
300
60
4
70
400
80
5
90
500

PS:我使用的是 Octave 3.8.1,类似于 matlab

【问题讨论】:

    标签: arrays matlab octave


    【解决方案1】:

    您是否尝试过以下方法?

    D = zeros(4 * size(A, 2) - 1, 1); % initialization
    D(1 : 4 : end) = A;
    D(2 : 2 : end) = B;
    D(3 : 4 : end) = C;
    

    【讨论】:

    • 我的机器上没有安装 MATLAB,但应该可以。
    • 我试过了,但我得到一个错误:A(I) = X: X must have the same size as I.... 我使用的代码是。 A=[1,2,3,4,5] B=[10,20,30,40,50,60,70,80,90] C=[100,200,300,400,500] D = zeros(4 * size( A,1) - 1, 1); % 初始化 D(1 : 4 : end) = A; D(2:2:结束)= B; D(3 : 4 : 结束) = C;
    • 您的尺寸尺寸错误; A 是一个行向量。试试D=zeros(4 * size(A,2) - 1, 1)
    • 顺便说一句,我已经确认您的更新代码适用于 Octave 3.8.0
    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 2014-07-22
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多