求用MATLAB画三维曲面图,z不是直接就是x,y的函数,而是有其他程序,该怎么画?

functionf=myfun(X)globalKLalphaf=0;sum=0;%X=[a,theta],X(1)=a——梯形臂长,X(2)=theta——梯形底角fo... function f = myfun(X)
global K L alpha

f = 0;
sum =0;
%X = [a,theta],X(1) = a——梯形臂长,X(2) = theta——梯形底角
for i = 1:26 %此处可根据划分情况变化

beta_1(i) = acot(cot(alpha(i))+K/L); %根据阿克尔曼原理,理论值
beta_e(i) = beta_1(i)*180/pi;

A(i) = -X(1)/K*cos(2*X(2)-alpha(i))+cos(X(2));
B(i)= -X(1)/K*sin(2*X(2)-alpha(i))+sin(X(2));
C(i) = -X(1)/K*cos(2*X(2))+2*cos(X(2))-cos(X(2)-alpha(i));

beta_2(i) = atan(A(i)/B(i)) - asin(C(i)/sqrt(A(i)^2+B(i)^2));
beta_a(i) = beta_2(i)*180/pi; %梯形机构,实际值

error(i) = abs(beta_a(i)-beta_e(i));

if alpha(i) <= 10*pi/180
f(i) = 0.6*error(i);
else
if alpha(i)<= 20*pi/180
f(i) = 0.3* error(i);
else
f(i) = 0.1*error(i);
end
end
sum = sum + f(i);
end
f = sum;
end

注:
K =260;L=400;alpha = linspace(0,25,26);
X(1) = 29*pi/180:0.5*pi/180:39*pi/180;
X(2) = 62*pi/180:0.5*pi/180:75*pi/180;
我想以[X(1),X(2),f]画三维曲面图,f 的确是X(1),X(2) 的函数,但是对每一对[X(1),X(2)],还要使alpha 从0-25赋值,求每个f(i)的值,再求和,才是最终这对[X(1),X(2)]的f值,该怎么画?万谢……
展开
 我来答
挣扎中的追风者
推荐于2016-09-18 · TA获得超过277个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:145万
展开全部
X(1) = 29*pi/180:0.5*pi/180:39*pi/180;
X(2) = 62*pi/180:0.5*pi/180:75*pi/180;
[Y1,Y2] = meshgrid(X(1),X(2)); % 生成画曲面需要的格点

Z = f(Y1,Y2); % 计算格点对应的函数值,如果还有关于alpha取平均这件事,你是可以写在函数f内部进行

surf(Y1,Y2,Z) % 画图
shading interp % surf画图一般是有格线,如果觉得看着不舒服,这句是用来去掉格线,你可以根据需要选择使用
追问
大神,我就是在把关于alpha函数这件事,写进了函数内部,出了问题,才来这里问的啊,你要是不嫌麻烦,可否帮我写下,运行下看看,谢谢。关于alpha函数似乎可以直接粘贴我的程序,只需小改下就可以。
追答
我比较懒,懒得看。。。。你要是写进去会出问题的话,那就这样,写一个函数 g(X,alpha),用来对固定的 alpha 计算,然后用 myfun 循环调用它取平均值。。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
烈火丛生442
2014-06-04
知道答主
回答量:29
采纳率:0%
帮助的人:16.5万
展开全部
plot3(x(1),x(2),f) 就可以了
追问
要是这么简单,我还来这里提问。。?你都没打开软件试试吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式