-3

我需要一些关于如何向量化代码以查找存储在矩阵中的多项式根的技巧。我拥有的是一个多维数组,其中包含100个100×3大小的矩阵。我正在粘贴下面的代码

one = ones ( 100, 100 );

poly.struc = reshape( [ one; gr_fac1; - gr_fac2 ], 100, 3, [] ); 

poly_roots_select = zeros ( 100, 100);

for j = 1:1:100

  poly_matrices = poly.struc ( :, :, j );

    for i = 1:1:100

      poly_select = poly_matrices ( i, : );

      poly_roots = roots ( poly_select );

      poly_roots_select ( i , j)  =  poly_roots ( real ( poly_roots) > 0 , 1 ) ; 

    end

end

我想删除两个for循环。至少我希望能够访问存储在poly.struc数组中的矩阵,而无需为此设置循环。还有其他方法可以将行向量从矩阵传递到函数而不需要循环吗?

提前致谢

4

1 回答 1

0

首先你可以分配一个矩阵B=[one;gr_fact;gr_fact2].... (只是让它更整洁一点)

然后确保M x N x P = numel(B)....其中 M,N,P 是新 3D 数组的维度,M,N,P = 100,3,100

您应该将 reshape 语句修改为:

poly.struc = reshape(B,100,3,100);

使用访问每个矩阵poly.struc(:,:,i)

如果您必须访问多行/多列,则无法避免循环。

于 2013-02-07T10:19:22.867 回答