• Регистрация
Larian
Larian+1.05
н/д
  • Написать
  • Подписаться

Некорректное вычисление переменных

Системы управления 
21.07.2019

Здравствуйте.

В приведенном коде некорректно вычисляются переменные Ni. Прикладываю скрин графиков A=atan2(Fs, Fc) и N1. Видно, что первая ступень N1 удовлетворяет условию, а вторая нет. Подскажите, пожалуйста, что не так.

t=0:10^-4:0.025; 
w=2*pi*50;
Fs=sin(w*t)
Fc=cos(w*t)
% вычисление фазового сектора вектора потокосцепления
A=atan2(Fs, Fc)
plot(t, A)
grid on
hold on
N1(A<0.5236 & A>-0.5236)=1;
N2(A>0.5236 & A<1.5708)=1;
N3(A>1.5708 & A<2.618)=1;
N4(A>2.618 | A<-2.618)=1;
N5(A>-2.618 & A<-1.5708)=1;
N6(A>-1.5708 & A<-0.5236)=1;
t=linspace(0,0.025,length(N1))
plot(t, N1)

Файлы

  • Снимок.PNG

Теги

      21.07.2019

      Ответы

      • Alexey_K
        Alexey_K+1.00
        22.07.2019 07:12

        Здравствуйте. Я полагаю происходит сбив времени из-за команды t=linspace(0,0.025,length(N1)).

        Вы её применяете из-за того,что просле  команд, аналогичных N1(A<0.5236 & A>-0.5236)=1; ваш массив становиться меньше исходного.

        Из хэлпа:

        Попробуйте переработать код примерно так:

        clc
        t=0:10^-4:0.025;
        w=2*pi*50;
        Fs=sin(w*t);
        Fc=cos(w*t);
        % вычисление фазового сектора вектора потокосцепления
        A=atan2(Fs, Fc);
        plot(t, A)
        grid on
        hold on
        N1=A;
        N1(N1<0.5236 & N1>-0.5236)=1;% подходят условию
        N1(N1~=1)=0;%не подходят условию
        plot(t, N1)