矩阵到指数的单元矩阵

时间:2015-11-04 21:29:26

标签: matlab matrix indexing cell-array

给定n维矩阵,如何将其转换为索引矩阵,如下所示:

click here

3 个答案:

答案 0 :(得分:3)

如MATLAB文档所述,您可以使用ind2sub函数:

IND = [3 4 5 6]
s = [3,3];
[I,J] = ind2sub(s,IND)

I =
     3     1     2     3

J =
     1     2     2     2

答案 1 :(得分:1)

函数ind2sub应该有效。另一种选择是手动计算。这很简单。注意矩阵的结构。它由按列分布的线性索引表示。这意味着指数可以计算为:

idxRow = mod(idx-1,nRows)+1;
idxCol = ceil(idx./nColumns);

这或多或少是在ind2sub中所做的,除了该函数巧妙地解决了N维矩阵的问题。并且还有一些错误处理。

答案 2 :(得分:0)

      public class MainClass{
        public static void main(String [] args){
           Car newCar;   //<-----------changed this
           Person newPerson = new Person();
           int position = 0;
           int x= 0;
           int option;

      do{
        //Code for menu options and user input detection of options...
        //...
        //...
        switch(option){
          case 1:
             newCar = new Car(); //<------------This fixed the issue
           // get user input and set it to newCar variables.....
           newCar.setVariableX();
           newCar.setVariableY();

           //assigment of new car to array of cars in newPerson
           newPerson.setCar(newCar,position);
           position++;
          break;

          case 2: x =2; //exit option
          break;

      }while(x!=2);

      // invoque print option for Array of Cars
   }
}

请注意,n = 3; [X,Y] = meshgrid(1:n); C = cell(n,n); for ii = 1:n for jj = 1:n C{ii,jj} = [X(ii,jj) Y(ii,jj)]; end end X矩阵可能就是您要查找的内容,因为它们是矩阵。为了包括索引单元格,我必须使用嵌套循环,但也可能是一种矢量化方法。

Y

其中每个X = 1 2 3 1 2 3 1 2 3 Y = 1 1 1 2 2 2 3 3 3 C = [1x2 double] [1x2 double] [1x2 double] [1x2 double] [1x2 double] [1x2 double] [1x2 double] [1x2 double] [1x2 double] 是所请求的索引组合。