回覆列表
  • 1 # 使用者3296806220335

    1、你是怎樣呼叫的?照理說,如果是正常的呼叫,例如

    yanyan(1.5,1:10,.1)

    應該會出現Matrix must be square的提示,而不會是too many input。

    2、vectorize不是這樣用的,它只能把一個char型別的表示式或sym、inline物件給替換成點運算,而對於一個double型別的數值,會強制轉換為char型別,可能導致丟失精度(因為char的表示範圍有限,即使在中文環境下,範圍也只是0-65535,而且只能是整數)。

    3、表示式寫錯了,把2h^2給放到指數函式外面了,也就是說

    exp(-(x-y)^2)/(2*z^2)

    應為

    exp(-(x-y)^2/(2*z^2))

    4、可以簡單修改如下:

    function c=yanyan(x,y,z)

    n=length(y);

    zz=sum(exp(-(x-y).^2/(2*z^2)));

    yux=n*z*(2*pi)^0.5;

    c=zz/yux;

    但這樣的寫法不支援x為向量的情況,可以考慮改成

    function c=yanyan(x,y,z)

    n=length(y);

    yux=n*z*(2*pi)^0.5;

    c=arrayfun(@(x)sum(exp(-(x-y).^2/(2*z^2))),x)/yux;

  • 中秋節和大豐收的關聯?
  • 女人有多怕熱?