矢量化一个代码,用于查找存储在矩阵中的多项式的根

时间:2013-02-06 14:08:37

标签: matlab structure

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

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 数组中的矩阵,而不需要为此设置循环。是否还有其他方法可以将行向量从矩阵传递到函数而无需循环?

提前致谢

1 个答案:

答案 0 :(得分: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)

访问每个矩阵

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