Мне нужна помощь в выяснении, как закодировать следующую проблему. Любая помощь будет принята с благодарностью!Функция Matlab с изменяющимися параметрами
Создать функцию, которая будет принимать входной вектор/массив для x
(1 by n
) и скалярного вход для a
, и производить выходной сигнал, определяемый следующее уравнение:
y(x,a)=((xsin(ax-2))/(sqrt(1+(ax)^2)
-π ≤ x ≤ π
a={.5 1 1.5 2}
Уравнение должно быть векторизованным в термины x
, а результатом функции является массив y
, который имеет тот же размер, что и массив x
.
Напишите сценарий, который вызывает эту функцию, для вычисления y(x,a)
для диапазона x
, определенного выше, и каждого значения параметра a
. Результаты должны храниться в матрице решений с использованием другой строки матрицы решений для каждого значения a
.
До сих пор для моей функции у меня есть:
function [y] = part1(a,x)
y=((x*sin(a*x-2))/(sqrt(1+(a*x).^2)));
end
Я не уверен, как вывести это в матрицу решения
Для моего сценария у меня есть:
%%
clear,clc
a={0.5 1 1.5 2};
x=-pi:0.1:pi;
for
part1(x,a)
end
I При этом я получаю следующие ошибки:
Undefined function 'mtimes' for input arguments of type 'cell'.
Error in part1 (line 4)
y=((x*sin(a*x-2))/(sqrt(1+(a*x).^2)));
Error in labtest2 (line 8)
y(i,:)=part1(x,a(i));
EDIT
Я внес некоторые изменения и все еще получаю некоторые ошибки, которые я не могу решить.
Вот мой полный код функции следует полный код для сценария:
Функция
function [y] = part1(x,a)
nx=numel(x);
na=numel(a);
y=((x.*sin(a.*x-2))./(sqrt(1+(a.*x).^2)));
size(y)=[nx na]
end
сценария
%%
clear,clc
a={0.5 1 1.5 2};
x=-pi:0.1:pi;
for i = 1:length(a)
y(i,:)=part1(x,a(i));
end
Ошибки
Undefined function 'times' for input arguments of type 'cell'.
Error in part1 (line 6)
y=((x.*sin(a.*x-2))./(sqrt(1+(a.*x).^2)));
Error in labtest2 (line 8)
y(i,:)=part1(x,a(i));
Ok Я установил некоторые ошибки в коде и сделал изменения вы предложили, но я до сих пор есть две проблемы 1. Как назначить выход матрица решения для первой части? 2. В настоящее время мой код выглядит так: a = {0.5 1 1.5 2}; x = -pi: 0,1: pi; для i = 1: длина (a) y (i,:) = part1 (x, a (i)); конец Здесь я получаю сообщение об ошибке «Ошибка в labtest2 (строка 8) y (i,:) = part1 (x, a (i)); –
Угадайте, я не могу добавить код в комментарии ... Я обновляю исходный вопрос с новыми вопросами/ошибками –
Я просто проверил вашу функцию - вам нужно использовать умножение по элементам. См. Мое редактирование, подходящее прямо. –