我需要一些关于如何对代码进行矢量化的技巧,这些代码可以找到存储在矩阵中的多项式的根。我所拥有的是一个多维数组,其中包含 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 数组中的矩阵,而不需要为此设置循环。是否还有其他方法可以将行向量从矩阵传递到根函数而无需循环?
提前致谢
答案 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)
如果必须访问多行/列,则无法避免循环。