WSJ116522190 发表于 2007-6-14 21:48

请问我这个多项式表达的哪里有错/解决了

for i=1:256
if i<32
N(i)=(-3/16)*i+8;
elseif 32<=i<64
N(i)= (-1/32)*i+3;
elseif 64<=i<96
N(i)=2;
elseif 96<=i<224
N(i)= (1/128)*i+1/4;
elseif 224<=i
N(i)= (1/32)*i-5;
end
end

我自己觉得没什么错误 但是总是得不到自己想要的结果
都出负数了

[ 本帖最后由 WSJ116522190 于 2007-6-14 23:19 编辑 ]

jimin 发表于 2007-6-14 21:50

oh ,my god ,这么多循环呀

WSJ116522190 发表于 2007-6-14 21:52

我就是想画几条连接的线段
线总是按照第一个公式 从1画到256了 郁闷

spano 发表于 2007-6-14 22:02

你中间的转点怎么处理的?
else if 可以改为elseif,这样后面只要2个end

WSJ116522190 发表于 2007-6-14 22:17

我怎么不能上传我的图啊
for i=1:256
if i<32
N(i)=(-3/16)*i+8;
elseif 32<=i<64
N(i)= (-1/32)*i+3;
elseif 64<=i<96
N(i)=2;
elseif 96<=i<224
N(i)= (1/128)*i+1/4;
elseif 224<=i
N(i)= (1/32)*i-5;
end
end
这样画出来的还是不对

WSJ116522190 发表于 2007-6-14 22:24

前64个数都是对的
但是后面的数全错了
好象后面全是按照
32<=i<64
N(i)= (-1/32)*i+3;
这个公式算了
我有后面各个区间的公式呀
是不是哪里定义错了

[ 本帖最后由 WSJ116522190 于 2007-6-14 22:34 编辑 ]

eight 发表于 2007-6-14 22:44

原帖由 WSJ116522190 于 2007-6-14 22:24 发表 http://www.chinavib.com/forum/images/common/back.gif
前64个数都是对的
但是后面的数全错了
好象后面全是按照
32

记忆中,无论哪种编程语言均不支持 a<=x<b 的写法,请改为两个条件的“与”操作

请多阅读 matlab 基础书,了解 if 语句中表达式的写法。

WSJ116522190 发表于 2007-6-14 22:55

当 0<X<32时  Y=-3/16X+8X
  32<X<64      Y=-1/16X+3
   64<X<96          Y=2
   96<X<224      Y=1/128X+1/4      
   224<X<256      Y= 1/32X-5         
就是想画这个小玩意 真是难倒了 就是这几天做毕业设计 手头也没什么书
马上毕业工作了 工作还是做市场的
我也不想深研究

spano 发表于 2007-6-14 23:00

for i=1:256
    if i<32
      N(i)=(-3/16)*i+8;
    elseif i>=32&&i<64
      N(i)= (-1/32)*i+3;
    elseif i>=64&&i<96
      N(i)=2;
    elseif i>=96&&i<224
      N(i)= (1/128)*i+1/4;
    else
      N(i)= (1/32)*i-5;
    end
end
plot(1:256,N);

[ 本帖最后由 spano 于 2007-6-14 23:10 编辑 ]

WSJ116522190 发表于 2007-6-14 23:07

原帖由 spano 于 2007-6-14 23:00 发表 http://www.chinavib.com/forum/images/common/back.gif
for i=1:256
    if i=32&&i=64&&i=96&&i

???   elseif i>=32 && i<64
                      |
Error: Expected a variable, function, or constant, found "&".
好象出错了

[ 本帖最后由 WSJ116522190 于 2007-6-14 23:16 编辑 ]

WSJ116522190 发表于 2007-6-14 23:18

spano谢谢了 成功了 &&改成1个 就好了

appleseed05 发表于 2007-6-25 18:51

为啥不用while呢,这样看上去不用这么麻烦了

mst-tum 发表于 2007-6-25 20:49

刚开始学时,也曾遇到分段画图的问题,开始和楼主的想法差不多,图是可以画出来,不过个人感觉比较麻烦,不是很满意。后来在网上找了一下,果然有高人,一下是个人找到的认为比较好的解决分段画图的方法,和大家分享一下。希望对大家有所启示,个人觉得里面的编程思想很值得学习。具体是那位高人给出的解答已经不记得了,希望高人不会生气。

问题是:
if x<-1&x>=-3
y=(-x.^2-4*x-3)/2;
elseif x>=-1&x<1
y=-x.^2+1;
else x<=3&x>=1
y=(-x.^2+4*x-3)/2;
分段函数画图,怎么做呢


【1】
clc;clear
x1=-3:0.01:-1;
x2=-1:0.01:1;
x3=1:0.01:3;

y1=(-x1.^2-4*x1-3)/2;
y2=-x2.^2+1;
y3=(-x3.^2+4*x3-3)/2;

x=;
y=;

plot(x,y)

【2】这个还算够用,罗嗦些。
clc;clear
x=-3:0.01:3;
y1=zeros(size(x));
y2=zeros(size(x));
y3=zeros(size(x));
N=length(x);
for k=1:N
if x(k)<-1&x(k)>=-3;
y1(k)=(-x(k).^2-4*x(k)-3)/2;
elseif x(k)>=-1&x(k)<1 ;
y2(k)=-x(k).^2+1;
else x(k)<=3&x(k)>=1 ;
y3(k)=(-x(k).^2+4*x(k)-3)/2;
end
end
y=y1+y2+y3;
plot(x,y)
页: [1]
查看完整版本: 请问我这个多项式表达的哪里有错/解决了