我正在尝试在Matlab中生成以下等式的等高线图。
theta=[(k+0.5)^2+t^2]^(-1/2)-[(k-0.5)^2+t^2]^(-1/2).
这就是我最初的表达方式。
k=linspace(-1,1,20);
t=linspace(-0.5,0.5,20);
[K,T]=meshgrid(k,t);
Z=((K+0.5)^2+T.^2)^-0.5 -((K-0.5)^2+T.^2)^-0.5;
contour(K,T,Z, 'ShowText', 'on')
我收到错误消息'轮廓的输入参数必须是真实的。'假设我在第4行表达了错误的等式。我很困惑我应该对表达式使用什么类型的操作,例如(K + 0.5)^ 2 + T. ^ 2,其中有向量和数字。我应该如何用Matlab语法表达它? 如果问题非常基本,请道歉。绝对的初学者。
答案 0 :(得分:1)
立即错误是因为Z
包含复数值(具有非零虚数组件)。
真正的问题是您在Z
定义的某些地方使用了matrix power (^
)而不是element-wise power (.^
)。
您计算Z
的表达式实际上应该是:
Z = ((K + 0.5).^2 + T.^2).^-0.5 - ((K - 0.5).^2 + T.^2).^-0.5;