我需要帮助弄清楚如何编写以下问题的代码。任何帮助将不胜感激!
创建一个函数,该函数将采用 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
当我现在运行此命令时,出现以下错误:
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));
编辑
我进行了一些更改,但仍然遇到一些无法解决的错误。
这是我的完整函数代码,后面是完整的脚本代码:
功能
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));
最佳答案
您得到Undefined function 'times' for input argument of type 'cell'
的原因是因为您的变量a
是一个元胞数组。您需要将 a
的分配更改为
a={0.5 1 1.5 2};
至
a=[0.5 1 1.5 2];
这将使它成为一个普通的数组。或者,您需要使用元胞数组表示法来引用它:a{i}
而不是 a(i)
。
关于具有变化参数的 Matlab 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930300/