1

関数から出力を取得しようとしていますが、最初の反復がスキップされています。ZETA = -18.7026 ではなく ZETA = 1.000 を取得し続けます 助けてください!

EIG = [
 -18.7026;          
  -4.6179 + 7.4827j;
  -4.6179 - 7.4827j;
  -1.1268 + 4.3335j;
  -1.1268 - 4.3335j;
  -0.3372 ]

for i = 1:6;

    SIG(i) = real(EIG(i));
    OMG(i) = imag(EIG(i));

    if  OMG(i) == 0;
        ZETA(i) = SIG(i);   
    else
        ZETA = -SIG ./(sqrt(SIG.^2 + OMG.^2));  
    end

end
4

2 に答える 2

2

else句にインデックスを含めるのを忘れました。代わりにこれを試してください:

EIG = [
 -18.7026;          
  -4.6179 + 7.4827j;
  -4.6179 - 7.4827j;
  -1.1268 + 4.3335j;
  -1.1268 - 4.3335j;
  -0.3372 ]

for i = 1:6;

    SIG(i) = real(EIG(i));
    OMG(i) = imag(EIG(i));

    if  OMG(i) == 0;
        ZETA(i) = SIG(i);   
    else
        ZETA(i) = -SIG(i) ./(sqrt(SIG(i).^2 + OMG(i).^2));  
    end

end
于 2013-09-23T13:56:45.653 に答える