matlab - Matlab : function handle in cell array with undefined operators

标签 matlab for-loop compiler-errors cell-array function-handle

当我尝试运行此代码时,出现以下错误:“类型为'cell'的输入参数的未定义运算符'。*'。我的目标是通过for循环构建一个数组(单元格数组,因为我正在使用函数句柄),并获取结果数组中每个元素的积分。错误发生在最后一行。我正在尝试为数组中的每个元素插入值1.5。关于如何“处理”此错误的任何提示?

FUN_1 = @(y_1,y_2,x_1,x_2)sum(heaviside(y_1-a_k(1:m,1)).*dirac(1,y_2-a_k(1:m,2))).*(-1/2.*log((x_1-y_1).^2+(x_2-y_2).^2))+(x_1-y_1).^2./((x_1-y_1).^2)+sum(dirac(y_1-a_k(1:m,1)).*dirac(y_2-a_k(1:m,2))).*(-1/2.*log((x_1-y_1).^2+(x_2-y_2).^2))+(x_1-y_1).*(x_2-y_2)./((x_1-y_1).^2+(x_2-y_2).^2);
Q_1 = @(x_1,x_2)integral2(@(y_1,y_2)FUN_1(y_1,y_2,x_1,x_2),a(1,1),c(1,1),a(1,2),c(1,2));

FUN_2 = @(y_1,y_2,x_1,x_2)sum(heaviside(y_1-a_k(1:m,1)).*dirac(1,y_2-a_k(1:m,2))).*(-1/2.*log((x_1-y_1).^2+(x_2-y_2).^2))+(x_1-y_1).*(x_2-y_2)./((x_1-y_1).^2)+sum(dirac(y_1-a_k(1:m,1)).*dirac(y_2-a_k(1:m,2))).*(-1/2.*log((x_1-y_1).^2+(x_2-y_2).^2))+(x_2-y_2).^2./((x_1-y_1).^2+(x_2-y_2).^2);
Q_2 = @(x_1,x_2)integral2(@(y_1,y_2)FUN_1(y_1,y_2,x_1,x_2),a(1,1),c(1,1),a(1,2),c(1,2));

k = cell(1,2*M-1);
n=0;
for n = 0:2*M-1
    k{1,n+1} = @(x_1,x_2)Q_1(x_1,x_2)*2*n*(x_1+1i*x_2)^(n-1)+ Q_2(x_1,x_2)*2*n*1i*(x_1+1i*x_2)^(n-1)]);
end
R = @(x_2)integral(@(x_1)k,a(1,1),c(1,1),'ArrayValued',true);
x= 1.5;
R{x}

我将代码更新如下:
k = zeros(1,2*M);
n=0;
for n = 0:2*M-1
    S = @(x_1,x_2)Q_1(x_1,x_2)*2*n*(x_1+1i*x_2)^(n-1) + Q_2(x_1,x_2)*2*n*1i*(x_1+1i*x_2)^(n-1);
    R = @(x_2)integral(@(x_1)S,a(1,1),c(1,1));
    k(1,n+1) = R(1);
end
disp(k);

但我仍然收到以下错误:
“输入函数必须返回'double'或'single'值。找到'function_handle'。
为线
k(1,n+1) = R(1);

有小费吗?

最佳答案

在这一行:

R = @(x_2) integral(@(x_1) S, a(1, 1), c(1, 1));

您没有在匿名函数S中将任何值传递给@(x_1) S,因此匿名函数只是返回函数句柄S而不是为一组输入评估S。我猜你想这样定义它:
R = @(x_2) integral(@(x_1) S(x_1, x_2), a(1, 1), c(1, 1));

关于matlab - Matlab : function handle in cell array with undefined operators,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44455018/

相关文章:

python - 这两个文件的类型有什么区别?

c++ - OpenCV 中的连接组件

matlab - 如何在 MATLAB 中为曲面的不同侧面选择不同的颜色

objective-c - Objective-C ISO C++禁止声明无类型的X

algorithm - 在 MATLAB 中使用优化工具箱使用遗传算法求解多目标函数

c# - 使用循环在 C# 中计算阶乘

java - 在字符串中检查字母或 0 的问题。[JAVA]

javascript - 我有一个包含数千个带有 URL 属性的项目的数组。如何为数组中的每个项目创建一个按钮,以打开 URL 的 iframe?

java - 尝试延长类(class)时遇到麻烦

java - USACO报告错误,因为我的课是公开的,应该与文件匹配