Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 24.08.2015
Сообщений: 4
1

Функция sign (линейный входной сигнал)

24.08.2015, 22:32. Показов 5550. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть диф. ур. третьего порядка. Входной сигнал не известен, но есть скорость изменения входного сигнала: dx/dt=x1*sign fi(t), где fi(t)=cos(w*t). Все начальные условия нулевые. Если нарисовать графики входного и выходного сигналов от времени, то входной сигнал должен быть линейно возрастающим(и когда меняется знак, например, на минус то входной сигнал начинает убывать, потом при смене знака на плюс снова возрастать и т.д), а выходной синусоидой. Первая картинка-это то, что должно быть, а вторая - что выдает(по коду ниже).

Подскажите, пожалуйста, как грамотно сменять знак (естественно код работает не верно и функция sign у меня не работает, поэтому заданно условие):

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
sign=1;
fi=cos(w*t);
 
if fi>0
    sign=1;
    elseif fi<0
   sign=-1;
   else sign=sign;
   end
 
u=k*(y(1)-y(2)-b1*y(3)-b2*y(4)); 
zu=[x1*sign*fi; y(3); y(4); -(a2/a3)*y(4)-(1/a3)*y(3)+(1/a3)*u]
Синяя кривая - входной сигнал, красная - выходной.
Миниатюры
Функция sign (линейный входной сигнал)   Функция sign (линейный входной сигнал)  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2015, 22:32
Ответы с готовыми решениями:

Входной и выходной сигнал
Здравствуйте, ув. Форумчане :) Была поставлена задача &quot;Разработка программы моделирования...

Функция нахождения вероятности ошибки от отношения сигнал/помеха
Здравствуйте, Могли бы помочь начинающему, Работаем над проектом и встала задача нахождения...

Вычислить Z=(sign(x)+sign(y))∙sign(x+y), где -функция определения знака числа, принимающая значение 1, если число а- положительное; -1, если число
Вычислить Z=(sign(x)+sign(y))∙sign(x+y), где -функция определения знака числа, принимающая...

Описать функцию Sign(X) целого типа, возвращающую для вещественного числа X следующие значения и найти значения выражения Sign(A) + Sign(B)
Описать функцию Sign(X) целого типа, возвращающую для вещественного числа X следующие значения:...

6
187 / 192 / 43
Регистрация: 13.05.2013
Сообщений: 709
24.08.2015, 23:26 2
Цитата Сообщение от cos27x Посмотреть сообщение
Matlab M
1
zu=[x1*sign*fi; y(3); y(4); -(a2/a3)*y(4)-(1/a3)*y(3)+(1/a3)*u]
Matlab M
1
zu=[x1*sign(fi)*fi; y(3); y(4); -(a2/a3)*y(4)-(1/a3)*y(3)+(1/a3)*u]
И 1, 4-9 строки не нужны.
1
0 / 0 / 0
Регистрация: 24.08.2015
Сообщений: 4
25.08.2015, 01:06  [ТС] 3
По этому поводу выдает ошибку:
Subscript indices must either be real positive integers or logicals.
Извините, плохо знаю английский, может Вы подскажете в чем проблема?

Добавлено через 6 минут
Все, ошибку больше не выдает, но график рисует все равно неправильный (как на втором рисунке из сообщения выше).

Добавлено через 1 час 24 минуты
Тем не менее благодарю за то, что откликнулись)
0
187 / 192 / 43
Регистрация: 13.05.2013
Сообщений: 709
25.08.2015, 01:09 4
Ну вы бы выложили полный код.
0
0 / 0 / 0
Регистрация: 24.08.2015
Сообщений: 4
25.08.2015, 04:55  [ТС] 5
Хорошо(правда он кривоват), может, подскажите что у меня не так, раз не получаются нужные графики:

yxt.m
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function yxt 
global a1;
global a2;
global a3; 
global E; 
global C1; 
global C2; 
global k; 
global b1; 
global b2;
global x1; 
global w;  
global beta; 
 
a1=1; 
x1=1; 
beta=10;
w=1;
alpha=10;
n=3; %n - порядок системы
 
 
%параметры для системы 3-го порядка
 
a3=(1/beta)^2;
a2=(1/beta)*2; 
 
 
C1=(1*2*3)/(1*(3-1)); 
C2=(1*2*3)/(1*2*(3-1*2));
 
k=a3*(alpha^3); 
b2=(C1/(alpha^2))-(a2/k); 
b1=(C2/alpha)-(a1/k);
 
 
t=[0:0.1:10]';
Y0=[0; 0; 0; 0];% начальные условия для диф.ур. 3-го порядка
    
[T,Y]=ode45(@zsys, t, Y0);
 
xg=Y(:,1); % столбец значений входного сигнала
B=Y(:,2); % столбец значений выходного сигнала
 
figure 
hold on; 
plot(t, B, '-r'); 
 
hold on
plot(t,xg, '-b');
xlabel('t'); ylabel('x, y'); 
 
legend('y', 'x');
zsys.m
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function yxt 
global a1;
global a2;
global a3; 
global E; 
global C1; 
global C2; 
global k; 
global b1; 
global b2;
global x1; 
global w;  
global beta; 
 
fi=cos(w*t);
 
u=k*(y(1)-y(2)-b1*y(3)-b2*y(4)); %закон управления для системы 3-го порядка
 
zu=[x1*sign(fi)*fi; y(3); y(4); -(a2/a3)*y(4)-(1/a3)*y(3)+(1/a3)*u];%3-ий порядок
Добавлено через 44 минуты
Еще из мат. части, есть такое:
"Входной сигнал является заранее неизвестной функцией времени, удовлетворяющей лишь условиям: x(0)=0, https://www.cyberforum.ru/cgi-bin/latex.cgi?\mid x'(0)\mid \leq x1."
0
187 / 192 / 43
Регистрация: 13.05.2013
Сообщений: 709
25.08.2015, 22:23 6
Чутка подправил, но ошибки в решении не искал
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
clear; close all; clc;
 
global a2 a3 k b1 b2 x1 w;
 
a1 = 1; 
x1 = 1; 
beta = 10;
w = 1;
alpha = 10; 
 
% параметры для системы 3-го порядка 
a3 = (1/beta)^2;
a2 = (1/beta)*2;  
 
C1 = (1*2*3)/(1*(3-1)); 
C2 = (1*2*3)/(1*2*(3-1*2));
 
k = a3*(alpha^3); 
b2 = (C1/(alpha^2))-(a2/k); 
b1 = (C2/alpha)-(a1/k); 
 
t = 0:0.1:10;
Y0 = [0 0 0 0];% начальные условия для диф.ур. 3-го порядка
    
[T,Y] = ode45(@zsys, t, Y0);
 
xg = Y(:,4); % столбец значений входного сигнала
B = Y(:,3); % столбец значений выходного сигнала
 
hold on;
grid on;
plot(T, B, '-r'); 
plot(T, xg, '-b');
xlabel('t'); ylabel('x, y'); 
legend('y', 'x');
 
function zu = zsys(t, y)
global a2 a3 k b1 b2 x1 w;
 
fi = cos(w*t); 
u = k*(y(1)-y(2)-b1*y(3)-b2*y(4)); %закон управления для системы 3-го порядка
zu = [x1*sign(fi).*fi; y(3); y(4); -(a2/a3)*y(4)-(1/a3)*y(3)+(1/a3)*u];
end
Миниатюры
Функция sign (линейный входной сигнал)  
1
0 / 0 / 0
Регистрация: 24.08.2015
Сообщений: 4
25.08.2015, 23:24  [ТС] 7
Все, проблема решена.

Добавлено через 3 минуты
kRosis, спасибо Вам большое, за такое внимание к моему вопросу! Я нашла в чем была ошибка и теперь рисуются правильные графики.
0
25.08.2015, 23:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2015, 23:24
Помогаю со студенческими работами здесь

Входной сигнал
Алгоритм обработки входной информации – алгоритм не рекурсивной цифровой фильтрации имеет вид: ...

Спидометр, входной сигнал
На валдае сгорел намотчик спидометра. Он включается в прикуриватель. Разобрал, там платка 1*1см, на...

Входной и выходной сигнал RC
Добрый день. Помогите пожалуйста: есть теория документ 1 нужно в MathCAD получить результат фото...

Входной сигнал вне диапазона
Подрубил монитор FLATRON L1515S с помощью VGA-кабеля. Картинка есть, если же запускаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru