2017-02-24 49 views
-1

變信號我想創建信號r(t),使得:創建時間在C++

r(t) = 1.......0<t<=30 sec 
r(t) = -(1/16)*(t-30)+1 ...... 30 to 34 sec 
r(t) = 0.75 ..... 34 to 50 sec 
r(t) = +(1/16)*(t-54)+1......50 to 54 sec 
r(t) = 1 ....54 to 60 sec 
Signal sample rate(Accuracy need) = 0.01 sec 

這裏我想要通過使用

float r = 1 

開始改變該隨時間如上所指出保持這些值寫入txt文件

Matlab代碼:

dt = 0.01; 
    T = [0:dt:80]; 
    j = 1; 
    for i=0:dt:(30-dt) 
    r(j) = 1; 
    j = j+1; 
    end 
    for i=30:dt:(34-dt) 
    r(j) = (-1/16)*(i-30)+1; 
    j = j+1; 
    end 
    for i=34:dt:(50-dt) 
    r(j) = 0.75; 
    j = j+1; 
    end 
    for i=50:dt:(54-dt) 
    r(j) = 1/16*(i -54)+1; 
    j = j+1; 
    end 
    for i=54:dt:(80) 
    r(j) = 1; 
    j = j+1; 
    end 

I am working on i7 intel ubuntu 14.06 
+0

什麼平臺?準確度取決於操作系統。 –

+0

我正在i7 intel ubuntu 14.06上工作 – Step

回答

0
[![void referencesignal() 
    { 
    ofstream ref1; 
    ref1.open("ref_gen.txt"); 
    vector<float> r; 
    float dt = 0.01; 
    float i; float j = 0.0; float p; 
     for (i=j;i<=30;i=i+dt) 
     { 
     r.push_back(1); 
     } 
    j = i; 
     for (i= j+dt;i<=34;i=i+dt) 
     { 
     p = (-0.0625*(i-j)+1); 
     r.push_back(p); 
     } 
    j = i; 
     for (i=j+dt;i<=50;i=i+dt) 
     { 
     r.push_back(0.75); 
     } 
    j = i; 
     for (i=j+dt;i<=54;i=i+dt) 
     { 
     p = (0.0625*(i-54)+1); 
     r.push_back(p); 
     } 
    j = i; 
     for (i=j+dt;i<=80;i=i+dt) 
     { 
     r.push_back(1); 
     } 
    ostream_iterator<float> output_iterator(ref1,"\n"); 
    copy(r.begin(),r.end(),output_iterator); 
    }][1]][1] 

https://i.stack.imgur.com/kt5BI.png