具有变化参数的 Matlab 函数

标签 matlab function debugging

我需要帮助弄清楚如何编写以下问题的代码。任何帮助将不胜感激!

创建一个函数,该函数将采用 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/

相关文章:

javascript - 如何在编译/缩小过程中消除 JavaScript 中不必要的调试代码?

c# - 如何在已编译的表达式树中调试或设置 break 语句?

function - 对于 VBScript,子程序的优势是什么?

javascript - 非递归代码递归

image - 将不是特定强度的单色归零

matlab - 如何使用 MATLAB 计算图像中的人数?

Python Pandas groupby 函数,具有每月、每小时的动态参数

ruby-on-rails - 从生产 irb 调试方法

matlab - 从Matlab中的共生矩阵计算熵

matlab - 找到图像 : Matlab 一系列曲线的交点