2012-04-01 153 views
0

那么我不知道我是否使用了确切的术语。我试图在网上找到答案。 这里是我所需要的: 我有一个MATIX在Matlab中将单维矩阵转换为二维

       a = 1 4 7 

            2 5 8 

            3 6 9 

如果我做了(4)的值是4,所以它是阅读第一列顶部BUTTOM然后继续下一....我不不知道为什么。然而,

我需要的是使用两个索引来调用它。行和列:

        a(1,2)= 4 

,甚至如果我可以把它按以下方式更好:

        a{1}(2)=4 

什么是这个过程真的叫(想了解),以及如何在MATLAB来执行。 我想到了一个循环。是否有一个内置的功能 非常感谢

检查: A =

18 18 16 18 18 18 16  0  0  0 
16 16 18  0 18 16  0 18 18 16 
18  0 18 18  0 16  0  0  0 18 
18  0 18 18 16  0 16  0 18 18 

>> a(4) 
    ans = 
    18 

>> a(5) 
    ans = 
    18 

>> a(10) 
    ans = 
    18 

我试图重塑。它正在重塑不转换成两个indedel

+0

这看起来不像我的矢量。 – 2012-04-01 17:19:59

+0

@Oli是什么?我之前说过,我不知道我是否使用正确的术语 – pac 2012-04-01 17:35:01

+0

它看起来像矩阵给我。 – 2012-04-01 17:35:33

回答

1

如果你已经有了一个矩阵,你已经可以用两个指标访问:

,如果你有

      a = 1 4 7 

           2 5 8 

           3 6 9 

您可以访问它作为

a(3,2) = 6 

但是,索引是从左上角开始,依次是行,然后是列。如果你想得到矩阵中的“4”,那么做:

a(1,2) 
+0

你是对的@很好,我试过,它现在不工作,是的,它正在工作。但是如果它是一个有两个indeces的矩阵接受(1)! – pac 2012-04-01 19:50:21

+0

这只是Matlab的一个功能:)。通过一个索引访问它将抓取该值,就像将列堆叠到一个向量中一样。 – Nate 2012-04-01 19:53:19

+0

详细说明@Nate的注释 - 矩阵同时支持'A(i,j,k)'索引和'A(i)'索引的一个原因是,您仍然可以循环遍历每个元素而不需要嵌套循环。例如,'for i = 1:product(size(A))'。请注意,大多数MATLAB函数接受矩阵输入,所以你不应该在实践中这样做 - 但是你可以**。 ;) – 2012-04-01 20:10:54

1

要重塑一个向量/矩阵/数组,请使用reshape()

0

或者你可以把它作为一个维数组,只需使用

((Column - 1) * 3) + Row - 1)作为索引。 3因为有三列。

NB一个(4)= 4,因为你已经布置在一个维阵列中的列和行的方式,你的是 “加载” 作为

R1C1,R2C1,R3C1,R1C2等wher R是行C是列 如果这是不方便的,那么你只需要得到任何填充阵列行则列,因此上述映射将

((Row - 1) * 3) + Column - 1) 

不要做Matlab的那么上面的代码假设数组从0开始,如果不只需加1即可。

+0

那么如何转换?我想叫它被其他正在使用二维约定的函数使用 – pac 2012-04-01 17:46:53

+0

以上是转换。 GetValue(Row,Col)= a [((Col-1)* 3)+ Row - 1) – 2012-04-01 17:57:19

+0

???未定义的函数或变量“Col”。 – pac 2012-04-01 18:32:03