MATLAB程序运行出错我想用MATLAB做一个简单的二维图像,是个菱形,但是必须要用循环语句,像for语句这样的,我的程序是这样的,但是每次运行都说plot矢量必须一致,帮看看哪里出错了,还有能不能帮写个完美运行的程序。
clc; clear all; close all;
x=linspace(0,4,100);
y=[];
for x0=x
if x<=2
y=[y,sqrt(3)*x0];
else
y1=[y,2*sqrt(3)-sqrt(3)*x0];
end
end
plot(x,y);
hold on;
plot(x,y1);
hold on;
我原本就想画这个的,看着挺简单,但是怎么都画不出来
一直提示plot矢量要一致
追答首先不说你matlab代码的逻辑问题,就单单
if x<=2
y=[y,sqrt(3)*x0];
else
y1=[y,2*sqrt(3)-sqrt(3)*x0];
这个表达式,你在纸面上画一下看看,能出菱形吗?
我那个是做了上半部分的,下半部分是因为出错了,于是我把下半的delete了,但是连图都出不来
追答上半部分也不对,上半部分第一条线是sqrt(3)*x0(x0=(0,2)),第二条线是2*sqrt(3)-sqrt(3)*x0(x0=(2,4))?
追问那正确的程序应该是怎么样的呢
每条线的表达式是这样啊
追答稍等,我帮你写
追问我想看看正确的表达到底是怎么样的
追答x=linspace(0,2,101);
n=length(x);
y1=sqrt(3)*x(1:51);
y2=-sqrt(3)*x(51:101)+2*sqrt(3);
figure(1)
plot(x(1:51),y1)
hold on
plot(x(51:101),y2)
hold on
plot(x(1:51),-y1)
hold on
plot(x(51:101),-y2)
以上全是最简单的写法了,至于你说的必须要用for循环语句,不知道是不是你们刚学到for循环,matlab是矩阵实验室,所以要尽量少用for语句,一般用for的地方,都可以用矩阵来表达,效率高很多!
我们要求用循环或者判断语句画这个图
我画成功了,你看我的代码
clc; clear all; close all;
x=linspace(0,2,500);
y=[];
y1=[];
for x0=x
if x0<1
y=[y,sqrt(3)*x0];
y1=[y1,-sqrt(3)*x0];
else
y=[y,2*sqrt(3)-sqrt(3)*x0];
y1=[y1,sqrt(3)*x0-2*sqrt(3)];
end
end
plot(x,y);
hold on;
plot(x,y1);
axis equal;
这个也成功了
那我就采纳你的答案吧
本回答被提问者采纳我们老师让我们用循环语句画二维图形,就这样,我想画个简单的菱形,都画不出来