[已答复] 有关图形的绘制

[复制链接]
yyjjyyjj 发表于 2008-7-31 09:25:10
有直线方程ax+by+c=0,
现在我有很多组数据,是a b c的大小,
可以用MATLAB画出这该直线的图形吗? 怎么画的?谢谢
我才学MATLAB

6 条回复


zhanhuichong 发表于 2008-7-31 10:59:19
refline(-a/b,-c/b)

yyjjyyjj 发表于 2008-7-31 14:23:25
多组数据该怎么办呢?可以象EXCEL一样,直接把a b c 放进去,让自动生成吗

zhanhuichong 发表于 2008-7-31 14:55:34
没有直接的函数
必需自己写程序
比如给出p=rand(10,3)十组ABC我们要绘图
x=-10:0.01:10;
k =-p(:,1)./p(:,2);
b=-p(:,3)./p(:,2);
xlen=length(x);
plen=size(p,1);
kk=repmat(k,[1 xlen]);
bb=repmat(b,[1,xlen]);
xx=repmat(x,[plen,1]);
y=kk.*xx+bb;
plot(x',y')
当然你可以使用循环语句
由于我没有循环语句的习惯
不到万不得已是不用的
至于循环法你自己写 简单得很(此时你可以使用fplot ezplot 甚至court等函数)

[ 本帖最后由 zhanhuichong 于 2008-7-31 14:57 编辑 ]
untitled.jpg

yixinzhongguo 发表于 2008-7-31 16:59:23
我有一个用隐函数的办法:
假设a,b,c储存在一个n*3的矩阵A里;
n=size(A,1);    %得出A的列数,即需要划线的数目
for  i=1:n+1
f=A(i,1)*y+A(i,2)*x+A(i,3);     %生成隐函数
hold on;      %保留前面的画的图像
ezplot(f);     %隐函数画图的命令
end

[ 本帖最后由 yixinzhongguo 于 2008-7-31 17:12 编辑 ]

zhanhuichong 发表于 2008-7-31 17:54:33
还要定义语句 syms x y
另外for  i=1:n+1错了不是n+1而是n
对同一组数据我运行了下,你的时间Elapsed time is 1.027751 seconds.
而我的Elapsed time is 0.017132 seconds.
快将近100倍  这是10组数据 就如1000组呢

yixinzhongguo 发表于 2008-7-31 21:52:28

回复 6# 的帖子

谢谢了,刚学!还没有你所要求的那么高,我现在是能做出来就行了!
谢谢兄弟你发现我的错误啦。以后我尽量用repmat语句了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表