声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1559|回复: 12

[编程技巧] 请问我这个多项式表达的哪里有错/解决了

[复制链接]
发表于 2007-6-14 21:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-6-14 21:50 | 显示全部楼层
oh ,my god ,这么多循环呀
 楼主| 发表于 2007-6-14 21:52 | 显示全部楼层
我就是想画几条连接的线段
线总是按照第一个公式 从1画到256了 郁闷
发表于 2007-6-14 22:02 | 显示全部楼层
你中间的转点怎么处理的?
else if 可以改为elseif,这样后面只要2个end
 楼主| 发表于 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
这样画出来的还是不对
 楼主| 发表于 2007-6-14 22:24 | 显示全部楼层
前64个数都是对的
但是后面的数全错了
好象后面全是按照
32<=i<64
N(i)= (-1/32)*i+3;
这个公式算了
我有后面各个区间的公式呀
是不是哪里定义错了

[ 本帖最后由 WSJ116522190 于 2007-6-14 22:34 编辑 ]
发表于 2007-6-14 22:44 | 显示全部楼层


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

请多阅读 matlab 基础书,了解 if 语句中表达式的写法。
 楼主| 发表于 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         
就是想画这个小玩意 真是难倒了 就是这几天做毕业设计 手头也没什么书
马上毕业工作了 工作还是做市场的
我也不想深研究
发表于 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 编辑 ]

untitled.fig

2.18 KB, 下载次数: 8

评分

1

查看全部评分

 楼主| 发表于 2007-6-14 23:07 | 显示全部楼层
原帖由 spano 于 2007-6-14 23:00 发表
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 编辑 ]
 楼主| 发表于 2007-6-14 23:18 | 显示全部楼层
spano  谢谢了 成功了 &&改成1个 就好了
发表于 2007-6-25 18:51 | 显示全部楼层
为啥不用while呢,这样看上去不用这么麻烦了
发表于 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=[x1,x2,x3];
y=[y1,y2,y3];

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

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 10:30 , Processed in 0.073653 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表