我猜你的代码应该是 surf(Xp(i),Yp(i),Zp(i)) 出错了吧,当x和y为1*10的向量时,则构成了一个10*10的二维平面,因此此时z应该是一个10*10的矩阵,而不是标量或矢量,错误提示:Z must be a matrix, not a scalar or vector 就是这个意思。
x=-6*pi:0.01:6*pi;y=-6*pi:0.01:6*pi;///这里加一句 [x,y] = meshgrid(x,y)/// m=length(x);n=length(y);[m,n]=size(z);z=sin(sqrt(x.^2+y.^2))./(x.^2+y.^2);surf(x,y,z);
每次运行都是提示Z must be a matrix,not a scalar or vector;;;然后w、Po列矩阵或行矩阵是前面运算出来的,在这里面直接调用是可以的,因为前面没有用Clear。。因为在运算z时,Po、w中的元素一一对应,然后,我把Po、w的第一个元素(i=1)拿出来单独画图,却是合适的,如图所示。 求大神帮帮忙,已经画了半天没...
就你认为错误的那句是正确的。由于y=--2:0.01:2;多了一个负号,导致[x,y]=meshgrid(x,y);得到的结果不是二维数组而是行向量,所以f算出也是向量,导致mesh根本不能用。去掉那个多余负号即可。
aZ must be a matrix, not a scalar or vector. Z必须是矩阵、不是标量或者传染媒介。 [translate] 英语翻译 日语翻译 韩语翻译 德语翻译 法语翻译 俄语翻译 阿拉伯语翻译 西班牙语翻译 葡萄牙语翻译 意大利语翻译 荷兰语翻译 瑞典语翻译 希腊语翻译 51La ...
这段程序把第一行表达式左侧的两个X变成小写,就可以正常运行。[x1,x2]=meshgrid(0:0.001:0.005,0:0.001:0.006);Z=0.7572+sqrt(0.022+(40.55*x1).^2+(42.53*x2).^2);mesh(X1,X2,Z);xlabel('自变量x1'),ylabel('自变量x2'),zlabel('函数值f(x1,x2)');结果为:
U必须是个矩阵
z必须是二维的,而不是一个向量数组
程序最后一句:mesh(k,i,abs(Y));出错了。一、你的程序没写完整,少了for循环的结束语end,二、以for循环的标志k,i作mesh的参数,是画不出mesh图的,mesh要求输入参数是矩阵,不是单个数值。所以,语法错误和函数选用错误。
Error using surf (line 71) Z must be a matrix,... Learn more about error, z must be a matrix, not a scalar or vector., matlab