MATLAB程序运行出错

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;

MATLAB程序运行出错的主要原因:

1、for循环语句命令有问题。

2、没有考虑到表达式有正负号的两种情况。

3、绘图命令应放在循环语句中。

运行结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-07-13
你的matlab语法有较多错误,你要是方便的话,可以给菱形的四个顶点给出来,我帮你写一个程序画图追问

我原本就想画这个的,看着挺简单,但是怎么都画不出来

一直提示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;

这个也成功了

那我就采纳你的答案吧

本回答被提问者采纳
第2个回答  2018-07-13
原题最好补充完整一下,不然会漏掉一些东西追问

我们老师让我们用循环语句画二维图形,就这样,我想画个简单的菱形,都画不出来

相似回答