您应该在Matlab中对包含向量和数字的单个表达式使用什么类型的操作?

时间:2017-01-08 19:05:21

标签: matlab

我正在尝试在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语法表达它? 如果问题非常基本,请道歉。绝对的初学者。

1 个答案:

答案 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;

enter image description here