-3

行列に格納された多項式の根を見つけるコードをベクトル化する方法についてのヒントが必要です。私が持っているのは、 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配列に格納されている行列に、ループを配置せずにアクセスできるようにしたいと考えています。ループを必要とせずに行列からルート関数に行ベクトルを渡すことができる他の方法はありますか?

前もって感謝します

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 に答える