作业帮 > 综合 > 作业

求matlab绘图大神,隐函数绘图

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/23 16:33:51
求matlab绘图大神,隐函数绘图
请问以下程序错在哪了?为啥第2个图作不出来?仔细讲解一下for循环那段,
clc;
clear all;
w=[];
z=[];
figure;
h=ezplot('w^(z/500)*0.01*(pi*sin(z/500*pi/2)+2*cos(z/500*pi/2)*log(w))+2*log(w)',[0,10^6,0,1000]);
x=get(h,'Xdata');
y=get(h,'Ydata');
[m,n]=size(x); %从这里开始到for循环结束没看懂,x指的是什么?从哪来的?
for i=1:m
for j=1:n
w=[w x{i,j}(1:end)];%这是什么?
z=[z y{i,j}(1:end)];
end
end
f=1000*(1+1./((w.^z*0.01).^2)+2*cos(z*pi/2)./(w.^z*0.01)).^0.5;
figure;
plot(w,f,'--r');
xlabel('w');
ylabel('f');
求matlab绘图大神,隐函数绘图
改一下程序clc;
clear all;
w=[];
z=[];
figure;
h=ezplot('w^(z/500)*0.01*(pi*sin(z/500*pi/2)+2*cos(z/500*pi/2)*log(w))+2*log(w)',[0.01,10,-10,10]);
x=get(h,'Xdata');% 获取上面画出的图所有点的横坐标
y=get(h,'Ydata'); %获取上面画出的图所有点的纵坐标
if strcmp(class(x),'double')&strcmp(class(y),'double') %判断是否是double类型如果是就转为cell类型
    x=num2cell(x);
    y=num2cell(y);
end
[m,n]=size(x); %求x大小,和y一样
for i=1:m
for j=1:n
w=[w x{i,j}(1:end)];)];%取出x的第i行j列的元胞,它是一个矩阵或者向量,不管怎么样,通过(1:end)转化为一个行向量放到w向量中.每次执行一次,w就增加一个行向量x{i,j}(1:end)

z=[z y{i,j}(1:end)];
end
end
f=1000*(1+1./((w.^z*0.01).^2)+2*cos(z*pi/2)./(w.^z*0.01)).^0.5;
figure;
plot(w,f,'--r');
xlabel('w');
ylabel('f');