Matlab 了解重塑函数如何形成矩阵 让我们考虑下面的矩阵来说明 A=rand(6,3) A = 0.3500 0.8308 0.7537 0.1966 0.5853 0.3804 0.2511 0.5497 0.5678 0.6160 0.9172 0.0759 0.4733 0.2858 0.0540 0.3517 0.7572 0.5308

Matlab 了解重塑函数如何形成矩阵 让我们考虑下面的矩阵来说明 A=rand(6,3) A = 0.3500 0.8308 0.7537 0.1966 0.5853 0.3804 0.2511 0.5497 0.5678 0.6160 0.9172 0.0759 0.4733 0.2858 0.0540 0.3517 0.7572 0.5308,matlab,matrix,reshape,Matlab,Matrix,Reshape,在应用整形函数后,我们总共有6*3=18个元素 reshape(A,2,9) ans = 0.3500 0.2511 0.4733 0.8308 0.5497 0.2858 0.7537 0.5678 0.0540 0.1966 0.6160 0.3517 0.5853 0.9172 0.7572 0.3804 0.0759 0.5308 显然,若我们查看原始数组,那个么我们可以很容易地看到这些

在应用整形函数后,我们总共有6*3=18个元素

reshape(A,2,9)

ans =

0.3500    0.2511    0.4733    0.8308    0.5497    0.2858    0.7537    0.5678    0.0540
0.1966    0.6160    0.3517    0.5853    0.9172    0.7572    0.3804    0.0759    0.5308
显然,若我们查看原始数组,那个么我们可以很容易地看到这些新矩阵的行与

B=A(:)'

B =

  Columns 1 through 9

    0.3500    0.1966    0.2511    0.6160    0.4733    0.3517    0.8308    0.5853    0.5497

  Columns 10 through 18

    0.9172    0.2858    0.7572    0.7537    0.3804    0.5678    0.0759    0.0540    0.5308

>> B(1:2:18)

ans =

    0.3500    0.2511    0.4733    0.8308    0.5497    0.2858    0.7537    0.5678    0.0540
所以在Reformea中,m,n,其中m*n必须是总元素,m表示从第一列的第一个元素开始,在列中递增,直到第n个元素?我也试过了

reshape(A,3,4)
Error using reshape
To RESHAPE the number of elements must not change.

它给了我误差,所以每当我选择n时,m必须是数组中的元素数除以n,对吗?提前感谢

Matlab按列存储其矩阵。这意味着在内部,它基本上只是一个数组,其中所有列都连接在一起。矩阵的形状单独存储

我不太明白你的最后一个问题,因为你的矩阵A有18个条目,但是你试着把它重塑成一个3*4=12个条目的矩阵

我希望这有助于您

重塑是为了按照中的说明对元素进行重新排序,当然元素的数量不能更改!。如果要调整矩阵的大小,请使用:

例子 使用“[]”删除行或列 使用索引进行零填充 AA=

通过索引,您还可以创建更大/更小的矩阵。
是的,n*m必须等于努美拉。但你也可以这样做:重塑A,3,[],让重塑自动选择你使用[]的维度大小。你的问题到底是什么?重塑A,[],3也可以这样做,m和n在重塑A,m,n中的作用以及它们的工作方式不值得否决,但对我来说重要的是知识这是我的另一个问题,如果m*n必须等于元素总数
A = rand(6,6) % Start matrix

A =

    0.0113    0.5362    0.3510    0.7220    0.2084    0.8344
    0.5013    0.9770    0.5221    0.5743    0.8442    0.8102
    0.1214    0.0390    0.9594    0.1385    0.9038    0.6081
    0.2480    0.9165    0.1986    0.3692    0.5135    0.6154
    0.3631    0.9843    0.3697    0.5964    0.6437    0.6901
    0.9978    0.8182    0.1990    0.8273    0.6811    0.2464
A(2:3, :) = [] % This removes 2nd and 3rd lines
A(:, [2 5]) = [] % This further removes 2nd and 5th columns

A =

    0.0113    0.3510    0.7220    0.8344
    0.2480    0.1986    0.3692    0.6154
    0.3631    0.3697    0.5964    0.6901
    0.9978    0.1990    0.8273    0.2464
AA = zeros(6, 6); % Build larger matrix the size you want ...
AA([1 2 4 6], [2 3 5 6]) = A % Place elements of `A` inside `AA` as you wish ... 
     0.0000   0.0113   0.3510   0.0000   0.7220   0.8344
     0.0000   0.2480   0.1986   0.0000   0.3692   0.6154
     0.0000   0.0000   0.0000   0.0000   0.0000   0.0000
     0.0000   0.3631   0.3697   0.0000   0.5964   0.6901
     0.0000   0.0000   0.0000   0.0000   0.0000   0.0000
     0.0000   0.9978   0.1990   0.0000   0.8273   0.2464
A([4 4 1 1 2 3], end:-1:1)

ans =

    0.2464    0.8273    0.1990    0.9978
    0.2464    0.8273    0.1990    0.9978
    0.8344    0.7220    0.3510    0.0113
    0.8344    0.7220    0.3510    0.0113
    0.6154    0.3692    0.1986    0.2480
    0.6901    0.5964    0.3697    0.3631