MATLAB的绘图功能出错

时间:2016-03-10 14:35:50

标签: matlab function plot

我有这个功能

h45 = @(x) 1 / (1 + exp(-thDesnorm' * [1 45 x]'));

其中thDesnorm是:

[-23.6608
   0.1919
   0.1866]

当我想以这种方式绘制这个函数时:

domain = 0:1:100;
figure;
plot(domain, h45(domain));

我收到此错误:

Error using  * 
Inner matrix dimensions must agree.
Error in @(x)1/(1+exp(-thDesnorm'*[1,45,x]'))

此功能在使用h45(1)进行调用时有效。

我猜比在绘图时,函数接收所有域向量作为参数x,而不是逐个接收该向量的值。

1 个答案:

答案 0 :(得分:1)

正如您所猜测的,参数x是您的完整数组domain。这显然会导致点积thDesnorm'*[1,45,x]中的尺寸误差。快速解决方法是使用arrayfun来评估h45。例如:

thDesnorm = [-23.6608
               0.1919
               0.1866];
h45 = @(x) 1 / (1 + exp(-thDesnorm' * [1 45 x]'));

domain = 0:1:100;
figure;
plot(domain, arrayfun(@(x)h45(x),domain)) % See modification in h45 call

enter image description here