私はmatlab
でAckley Function
をプロットしようとしているしかし、私は次のようなエラーにサーフィン(ラインXXXを使用して「サーフィン」エラー(MATLAB)
エラーを取得しています)
X、Y、Z、およびCは複合体ではありません。
ここで私はあなたがterm1 = -a * exp(-b*sqrt(1/d * sum(x)));
であなたのsqrt()の計算のために負の引数を取得している
clear; clc; close all;
% Parameters
nx = 2; % No. of Input variables
f = @ackley;
limits = repmat([-40 40], nx, 1);
titl = 'Ackley';
% Plot
[X,Y] = meshgrid(linspace(limits(1,1),limits(1,2),100),...
linspace(limits(2,1),limits(2,2),100));
Z = reshape(f([X(:)'; Y(:)']), 100, 100);
surfc(X,Y,Z);
Ackley.m
function [y] = ackley(x)
d = length(x);
a = 20;
b = 0.2;
c = 2*pi;
term1 = -a * exp(-b*sqrt(1/d * sum(x)));
term2 = -exp(1/d * sum(cos(c * x)));
y = term1 + term2 + a + exp(1);
end
それは '合計(X)でなければなりません^ 2 ' – hbaderts
@hbadertsまたは'合計(X。 。^ 2) ' –
@hbadertsしかし、私は上記のコードで間違ったプロットを取得しています。 –