z=-20*exp(-0.2*sqrt(x.^2+y.^2)./2)-exp((cos(2*pi.*x)+cos(2*pi.*y))./2)+22.71828
请注意拼写,尤其是括号()。。。
与数组内元素有关的运算要加‘.’
结果如下图:
这不是点乘的问题,这个你括号不匹配,表达式中左括号和右括号应该数量一样。第一项加一个左括号就行了,改为:
z = -20*exp((-0.2*sqrt(x.^2+y.^2)/2))-exp((cos(2*pi*x)+cos(2*pi*y))/2)+20+2.71828;
或者:
z = -20*exp(-0.2*(sqrt(x.^2+y.^2)/2))-exp((cos(2*pi*x)+cos(2*pi*y))/2)+20+2.71828;
点乘和点除代表矩阵对应元素相乘除。比如
A=[1 2; 3 4];
B=A;
A.*B=[1*1 2*2;3*3 4*4]=[1 4;9 16]
而A*B=[1*1+2*3,1*2+2*4;3*1+4*3,3*2+4*4]=[7 10;15 22]
多了一个右括号(或者少了一个左括号)
[x,y]=meshgrid(-100:1:100);
z = -20*exp(-0.2*sqrt(x.^2+y.^2)/2)-exp((cos(2*pi*x)+cos(2*pi*y))/2)+20+2.71828;
mesh(z);
看一些matlab的书,或者在网上搜一下matlab的ppt看看,就知道了。这是基础知识。