无法从 function_handle 转换为 double。
时间: 2024-01-22 07:18:50 浏览: 627
这个错误通常出现在你试图将一个函数句柄(function handle)作为参数传递给需要数值参数的函数时。函数句柄是一种特殊类型的 Matlab 变量,它可以像函数一样被调用,也可以被传递给其他函数。但是,如果一个函数期望一个数值参数而你却传递了一个函数句柄,就会出现这个错误。
解决这个问题的方法是,检查你的代码,找出哪个函数期望一个数值参数而你却传递了一个函数句柄。然后修改代码,确保传递正确的参数类型。如果你需要将函数句柄转换为数值类型,可以使用 feval 函数来实现。例如,假设你有一个名为 fh 的函数句柄,你可以这样调用它并将返回值存储在变量 x 中:
```
x = feval(fh);
```
当然,你需要确保 fh 代表的函数不需要任何输入参数。
相关问题
无法从 function_handle 转换 为 double。 出错 fanqian (第 48 行) values(i) = @(i) target(samples(i,:));
这个错误一般是因为你在给 `values` 赋值的时候,使用了一个函数句柄 `@(i)`,但是 `values` 数组的类型是 `double`,无法存储函数句柄。你需要检查一下 `values` 的类型是否正确,如果需要存储函数句柄,可以把 `values` 的类型改为 `cell`,然后将函数句柄存储在 `cell` 数组中。例如:
```
values = cell(1, n);
for i = 1:n
values{i} = @(i) target(samples(i,:));
end
```
这样就可以将函数句柄存储在 `cell` 数组中了。
for i=1:n_samples % 对 每个点产生的 链 进行 响应值的计算 % 计算新生成样本点的目标函数值 values(i) = @(i) target(samples(i,:)); %这个地方还要不要把这些响应值储存了【够不够,会不会重叠替代了】 %??????????----------------------------------------------- % 统计失效样本数 failures(i) = sum(values(i) <= 0); end,,无法从 function_handle 转换为 double。
这个错误提示是因为在计算 `values(i)` 的时候,使用了一个 function_handle 类型的变量 `target`。而在计算 `values(i)` 的时候需要使用 `target` 所代表的函数进行计算,但是 `target` 的类型是 function_handle,不能直接进行计算。
解决方法是需要先将 `target` 转换为 double 类型,可以使用 `feval` 函数来实现:
```
for i=1:n_samples
% 对每个点产生的链进行响应值的计算
% 计算新生成样本点的目标函数值
values(i) = feval(target, samples(i,:)); % 使用 feval 将 target 转换为 double 类型
% 统计失效样本数
failures(i) = sum(values(i) <= 0);
end
```
阅读全文