#matlab #function #math #simulink
#matlab #функция #математика #simulink
Вопрос:
Я написал этот код в редакторе MATLAB и хочу, чтобы эта функция была периодической (период = 0,8 с)
HR=75;
E_max=2.0;
E_min=0.06;
t_c=60/HR;
T_max=0.2 0.15*t_c;
t=0:0.0001:t_c;
t_n=t/T_max;
E_n=1.55*(((t_n/0.7).^1.9)./(1 (t_n/0.7).^1.9)).*(1./(1 (t_n/1.17).^21.9));
E=(E_max-E_min)*E_n E_min;
plot(t,E)
Я хочу использовать функцию в simulink в качестве источника напряжения. итак, мне нужна не точка, а целая функция. итак, мне нужна функция, которая занимает общее время (например, 20 секунд) и выдает выходные данные НЕПРЕРЫВНО (например, функция Sin).
функция и ее форма таковы:http://tinypic.com/r/2641a1s/8
Комментарии:
1. 1) Какова ваша функция? Код очень запутанный. 2) Как вы хотите определить периодичность? Кажется, значение функции при 0.8 и 0 не равно, простое повторение не кажется правильным вариантом?
2. если вы просто скопируете и вставьте этот код в свой редактор и запустите его, вы увидите, что значения функции в 0.8 и 0 равны!!!!!!!!! и что вы имеете в виду, как я хочу сделать ее периодической? во всех отношениях она будет периодической!!!! и я думаю, это настолько ясно, что моя функция E_n = 1.55 * (((t_n/0.7).^1.9)./(1 ( t_n/0.7).^1.9)).*(1./(1 ( t_n/1.17).^21.9)).
3. Я не знаю, что вы делаете, но я добавил
plot(t_n,E)
в конце, и оба значения не равны. Возможно, я просто вывел неправильные данные, поэтому ОБЪЯСНИТЕ свой код!4. t_n равно t / T_max, поэтому вам нужно построить это: plot(t, E)
Ответ №1:
Создайте свои данные в рабочей области MATLAB base, запустив свой код в MATLAB перед запуском модели Simulink. Затем используйте блок повторяющейся последовательности. Используйте вашу переменную t в качестве значений времени и E в качестве выходных значений. Вам также нужно убедиться, что максимальный размер шага, который принимает решатель, равен min (diff (t)), что в случае ваших данных равно 0.0001.
Комментарии:
1. Ставить блок в модель; дважды нажмите на блок, чтобы открыть его диалоговое окно, в поле редактирования, который говорит, что значения времени, выложил название своей переменной времени, т; в поле, который говорит, что выход значения имя Ваш сигнал переменная, т. е. это очень фундаментальная вещь в состоянии сделать в Simulink — это звучит, как вы должны выглядеть в первой главе инструкции , которые дает примеры того, как построить базовые модели.
Ответ №2:
Ну, вы путаете вектор Matlab и функцию
Функция выдает значение для любого запроса в домене функции. т.е. если домен равен [-1,2], то f (x), где x в [-1,2] должен выдавать и только одно значение. например, y = 3x 2.
Если вы хотите The function
, то вам следует преобразовать скрипт в функцию.
cardiac.m
function y = cardiac(x,cropPeriod,period)
t_n = mod(x*cropPeriod/period,cropPeriod);
y=1.55*(((t_n/0.7).^1.9)./(1 (t_n/0.7).^1.9)).*(1./(1 (t_n/1.17).^21.9));
end
Затем сохраните файл как cardiac.m
и он предоставит вам функцию.
И вызовите функцию как cardiac(x,0.8)
, тогда это даст вам желаемое значение
demo.m
t = 0:0.01:10; % choose arbitrary range.
p = 0.8; % period
cropPeriod = 4; % explained below
y = cardiac(t,cropPeriod,p);
plot(t,y);
Ясно, что уравнение, приведенное в http://tinypic.com/view.php?pic=j75jzkamp;s=8#.U7iH43VdXJ8 отличается от графика на изображении. Поскольку я не знаю период функции, вы можете просто выбрать подходящее число cropPeriod
, пока не будете удовлетворены.
Пример графика
Если вы просто хотите, чтобы у нее был период p
График MATLAB — это не что иное, как последовательность точек данных. при вызове plot(t,E)
MATLAB отображает точки в положении (t (1), E(1)) и (t(2), E(2)) … Таким образом, если вы хотите ее масштабировать, просто введите
plot(p * t,E);
xlabel('sec(s)'); % Give x axis label
ylabel('E(t)')
где p = 0.8
Комментарии:
1. Спасибо за ответ. Я хочу использовать функцию в simulink в качестве источника напряжения. итак, мне нужна не точка, а целая функция. итак, мне нужна функция, которая занимает общее время (например, 20 секунд) и выдает вывод НЕПРЕРЫВНО.
2. @user3806398, первая реализация — это математическая функция, что означает, что она выдает значение для любого ввода, что, опять же, означает, что она выдает вывод НЕПРЕРЫВНО.
3. Ах, я обнаружил, что уравнение, указанное в URL tinypic.com/r/2641a1s/8 не имеет периода 1. Я не думаю, что график был сгенерирован с использованием этого уравнения. Чтобы внести изменения, я добавил дополнительную переменную
cropPeriod
для регулирования формы функции