一毛 发表于 2009-3-19 12:06

各位帮忙看看这个小函数出了什么问题?(谢谢)

编程的时候需要绘制离散序列和的时域波形,在书上找到一个离散序列相加的函数(代码如下),保存后调用是出现这样的错误提示,请问问题出在哪里?应该如何改动?各位高手帮帮忙吧,我是菜鸟,需要帮助。谢谢啦!
function=jxl(x1,x2,n1,n2)
n=min(min(n1),min(n2)):max(max(n1),max(n2)); %构造和序列函数
s1=zeros(1,length(n));s2=s1; %初始化新向量
s1(find((n>=min(n1))&(n<=max(n1))==1))=x1;%将x1中在和序列范围内但又无定义的点赋值为零
s2(find((n>=min(n2))&(n<=max(n2))==1))=x2;%将x2中在和序列范围内但又无定义的点赋值为零
x=s1+s2;%两长度相等序列求和
axis([(min(min(n1),min(n2))-1),(max(max(n1),max(n2))+1), (min(x)-0.5),(max(x)+0.5)])%设置坐标轴显示范围

调用的代码:
x1=; n1=-2:2; x2=1:6; n2=0:5;
=jxl(x1,n1,x2,n2);
stem(n3,x3,'filled')
运行后出现的错误提示如下:???In an assignmentA(I) = B, the number of elements in B and
I must be the same.
Error in ==> jxl at 7
s1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
我help find 了一下,find的调用好像没有这种形式,但是我不知道改如何改。而且这个是书本上的函数,会错得这么离谱?

[ 本帖最后由 ChaChing 于 2009-3-19 14:46 编辑 ]

一毛 发表于 2009-3-19 14:19

回复 楼主 一毛 的帖子

Is anybody can help me ?

ChaChing 发表于 2009-3-19 14:49

function=jxl(x1,x2,n1,n2)
vs
=jxl(x1,n1,x2,n2);

Check pls!

[ 本帖最后由 ChaChing 于 2009-3-19 14:52 编辑 ]

一毛 发表于 2009-3-19 15:33

原帖由 ChaChing 于 2009-3-19 14:49 发表 http://www.chinavib.com/forum/images/common/back.gif
function=jxl(x1,x2,n1,n2)
vs
=jxl(x1,n1,x2,n2);

Check pls!
>> x1=;
>> n1=-2:2;
>> x2=1:6;
>> n2=0:5;
>> =jxl(x1,x2,n1,n2);
??? Error: File: jxl.m Line: 7 Column: 41
The expression to the left of the equals sign is not a valid target for an assignment.
为什么左边的表达式是无效的呢?

一毛 发表于 2009-3-19 15:57

我知道是为什么错了,是因为我在编写函数的时候这句
axis([(min(min(n1),min(n2))-1),(max(max(n1),max(n2))+1),(min(x)-0.5),(max(x)+0.5)])
在中间分行了,也就是写成了
axis([(min(min(n1),min(n2))-1),(max(max(n1),
max(n2))+1),(min(x)-0.5),(max(x)+0.5)])
但是程序报错的时候没有报这句的错,而是报

s1(find((n>=min(n1))&(n<=max(n1))==1))=x1;

s2(find((n>=min(n2))&(n<=max(n2))==1))=x2;

这两句的错。很奇怪啊。后来我先把上面那一句后面的x1和x2先改成0,然后再运行,这时才报最后一句的错。于是我把最后一句改好之后就可以出图了,但是很显然,出来的图是全为零的直线。所以,我就回去把原来的地方又改回x1和x2,再运行,哎呀!就正确啦!哈哈
谢谢chaching啦,你提醒我应该回去仔细检查程序。最后我才检查出来了问题所在,也让我知道以后写程序不能乱换行,而且一定要仔细。呵呵
页: [1]
查看完整版本: 各位帮忙看看这个小函数出了什么问题?(谢谢)