【问题标题】:How to get data from 2D array and put into 1D array如何从二维数组中获取数据并放入一维数组
【发布时间】:2013-12-26 03:53:02
【问题描述】:

我有一个 2D 数组,我想通过 MATLAB 创建一个 1D,以满足 1D 输出的每个元素由 2D 数组中给定索引的值创建的要求。示例二维数组是

A=[2 4 6; 1 9 7.3 4 5]

一维数组的索引

X=[1;2;3]
Y=[1;2;3]

我想存储一维数组,其中的元素由

 B=A(x,y) % x,y are index in X and Y matrix

构建一维数组的示例:

X=[1;2;3]
Y=[1;2;3]

 B=[A(1,1);A(2,2);A(3,3)]=[2; 9; 5]

这是我的代码

B=zeros(1,length(A));
B=A(...)  %I don't know it

我该如何实现它? 谢谢大家。

【问题讨论】:

    标签: matlab matrix indexing


    【解决方案1】:

    您正在寻找sub2ind:

    A=[2 4 6; 1 9 7; 3 4 5]
    X=[1;2;3]; Y=[1;2;3];
    B = A(sub2ind(size(A),X,Y))
    
    B =
    
         2
         9
         5
    

    【讨论】:

    • @user3051460 没问题!如果这是你想要的,请接受。 :)
    【解决方案2】:

    我不确定我是否理解您的问题,但我认为您想在 2×n 矩阵上应用函数

    试试

    for pos=1:size(a,2)
      b(pos) = f(a(:,pos));
    end
    

    【讨论】:

      【解决方案3】:

      您可以使用cellfun 来执行此操作。您将 A 逐列转换为单元格,并对单元格的每个元素执行f

       A=[2 4 6; 1 2 7];
      
       % some example f funcion that just adds the col_index_A and row_index_A
       f = @(col_index_A, row_index_A) col_index_A + row_index_A; 
      
       % execute f with parameters that come from each column of A
       B = cellfun(@(c) f(c(1), c(2)), num2cell(A, 1));
      
       B =
      
           3     6    13
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-15
        • 2021-02-06
        • 2021-08-01
        相关资源
        最近更新 更多