Создание изменяющегося во времени сигнала в переполнении стека

Я хочу создать сигнал r (t) такой, что:

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

изменяйте это со временем, как указано выше, и продолжайте записывать эти значения в текстовый файл

Код 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

-1

Решение

    [![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

0

Другие решения

Других решений пока нет …