Как построить Phasor в MATLAB - PullRequest
0 голосов
/ 29 марта 2020

Я работал над сжатием данных по алгоритму SDT. Мне было дано задание сжать данные, имеющие 20001 балл, и я успешно сжал их до 944 баллов. Теперь я хочу построить вектор в MATLAB. Как это сделать?

Я использовал команду plot3, но, к сожалению, не смог получить желаемый результат.

Мой код:

clear
clc
load('s.mat');
[N,~]=size(a(:,1));
b=[]
s=1; %storage point
a(s,6)=a(1,2); %vs, store the first phasor
a(s,5)=a(1,1); %ts
a(s,7)=a(1,3); %alphas
for n=3:1:N
    p=n-1;
    vp=a(p,2);
    tp=a(p,1);
    alphap=a(p,3);
    vn=a(n,2);
    tn=a(n,1);
    alphan=a(n,3);
    vs=a(s,6); %vs
    ts=a(s,5);%ts
    alphas=a(s,7);%alphas 
    for i=s+1:n-1 %Condtion for Vi and Current Points
        ti=a(i,1);
        alphai=a(i,3);
        vi=a(i,2)*(cos(alphai)+1i*sin(alphai));%Phasors (Vi)
        vcomp=((vn-vs)/(tn-ts))*(ti-ts)+vs;
        alphacomp=((alphan-alphas)/(tn-ts))*(ti-ts)+alphas;
        vcpx=vcomp*(cos(alphacomp)+1i*sin(alphacomp));%Phasors (Vcomp)
        %Etve condition to convert ploar into rectangular components
        e_TVE=norm((vcpx-vi),2)/norm(vi,2);%etve condition
        a(i,4)=e_TVE;
        if e_TVE<=0.001 
           continue;
        else
            s=p;
            a(s,6)=vp; %vs
            a(s,5)=tp;%ts
            a(s,7)=alphap;%alps
            % a(s,8)=a(p,6)*(cos(a(p,7))+1i*sin(a(p,7))); %Phasors of Storage point
            break;
        end  
    end 
end
a(n,6)=vn; %vs,reserve the last data
a(n,5)=tn;%ts
a(n,7)=alphan;%alps
x=1;
for y=1:1:20001
    if a(y,5)>0 || a(y,6)>0 || a(y,6)>0
       b(x,1)=a(y,5);
       b(x,2)=a(y,6);
       b(x,3)=a(y,7);
       x=x+1; 
    end   
end 

Рисунок 1 - оригинал ( Несжатые данные):

Figure 1

Рисунок 2 - результат сжатых данных:

Figure 2

На рисунке 3 показан желаемый результат:

Figure 3

...