我试图用Matlab绘制3D函数,我的脚本包含以下内容:
function f=Untitled(s1 ,s2 , s3)
s =[s1 s2 s3];
f= 0.0663 + 0.2099245 *(s(1)^2+s(2)^2+s(3)^2);
endfunction
xdata = linspace(36,36,36);
ydata = linspace(36,36,36);
zdata = linspace(36,36,36);
contour( xdata , ydata , zdata , [1 36 72 110])
我收到以下错误:
错误====>无题2 s = [s1 s2 s3]
我是Matlab的最新版本,任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
您的代码中存在许多问题:
s = [s1 s2 s3];
将s1
s2
和s3
水平连接到变量s
为此,“每个变量中的行数应该相同”。这是导致错误的原因。
您需要检查传递给的变量的尺寸
功能untitled
endfunction
是Octave
语法。您只需使用end
即可
Matlab
然后,您分别使用s(1)
,s(2)
,s(3)
功能
那你为什么要抓他们?你可以使用相应的 变量本身就像这样:
f= 0.0663 + 0.2099245 *(s1^2+s2^2+s3^2);
然后您正在使用linspace
(我不知道您实际上打算如何处理linspace
)来复制值。虽然这个
没有任何问题,有一个单独的内置功能
那叫
repmat
您可以像这样使用它:repmat(36,[1,36])
注意:同时将您的功能命名为任何其他名称以进行良好练习