jgchen1973 发表于 2008-6-14 11:48

这个程序如何编制

我想编制一个小程序,但总是调不通,请大家给我指点一下:
for i=1:5
m=5*i;
=hv(m);
end
for i=1:5
       m=i
      for j=1:5;
   AA(j,i)=cos(m*j*pi);
end
c(1,i)=simply(h*AA(:,i)-(1/2)*h(1,i)*AA(1,i)-(1/2)*h(1,5)*AA(5,1)
end


被调用的子函数为:
function   =hv(m)

在运行是总是出现这样的错误:
??? Subscripted assignment dimension mismatch.

Error in ==> chebyshev at 18
    =hv(m);
请大家给我看看,我编的出错误在哪了,先谢谢了

sigma665 发表于 2008-6-14 12:33

你单独运行前面试试

h只是一维的,=hv(m);这样试试

jgchen1973 发表于 2008-6-14 12:54

回复2楼

我改了,还是不能运行,真是郁闷!还能帮我研究一下吗?

ch_j1985 发表于 2008-6-14 13:11

原帖由 jgchen1973 于 2008-6-14 12:54 发表 http://www.chinavib.com/forum/images/common/back.gif
我改了,还是不能运行,真是郁闷!还能帮我研究一下吗?
LZ把被调用的子函数代码也贴出来吧

jgchen1973 发表于 2008-6-14 13:57

回复4楼

被调用的子函数为:
function =hv(m)
g=cos(m*pi/6);
h=sin(m*pi/3);
形式基本就是这样的!
谢谢

w89986581 发表于 2008-6-14 14:46

回复 楼主 的帖子

错误提示很清楚啊,你把向量赋给了数组的一个元素,即超出了被赋值变量的维数.
c(1,i)=simply(h*AA(:,i)-(1/2)*h(1,i)*AA(1,i)-(1/2)*h(1,5)*AA(5,1)

wwbeyondww 发表于 2008-6-14 14:47

在我电脑上运行得很好阿,只是simply这个命令没有,我改成simplify的话
c =

Columns 1 through 3

-0.00000000000000   0.86602540378444   0.43301270189222

Columns 4 through 5

   0.00000000000000   0.86602540378444

jgchen1973 发表于 2008-6-14 15:59

如何改正啊?

我不知道如何去改啊?能否指点一下啊?谢谢了

ch_j1985 发表于 2008-6-14 16:10

原帖由 jgchen1973 于 2008-6-14 15:59 发表 http://www.chinavib.com/forum/images/common/back.gif
我不知道如何去改啊?能否指点一下啊?谢谢了

clc
clear
for i=1:5
m=5*i;
=hv(m);
end
for i=1:5
    m=i;
      for j=1:5;
          AA(j,i)=cos(m*j*pi);
      end
      c(1,i)=simplify(h*AA(:,i)-(1/2)*h(1,i)*AA(1,i)-(1/2)*h(1,5)*AA(5,1));
end

jgchen1973 发表于 2008-6-14 16:16

还是不运行啊!!

我修改了还是不能运行啊!到底是啥原因啊!

jgchen1973 发表于 2008-6-14 16:47

我修改后可以运行了!

我修改后可以运行了,但是运行的结果形式如下:
c =

   336


c =

   336   664


c =

   336   664   984


c =

         336         664         984      1296


c =

         336         664         984      1296      1600
我是变化了里面的关系式,如果我仅要最后一组结果,有办法控制没有啊?

ch_j1985 发表于 2008-6-14 17:39

原帖由 jgchen1973 于 2008-6-14 16:47 发表 http://www.chinavib.com/forum/images/common/back.gif
我修改后可以运行了,但是运行的结果形式如下:
c =

   336


c =

   336   664


c =

   336   664   984

是不是只要这一组:c =

         336         664         984      1296      1600
要在下面一句后加分号,红色的
c(1,i)=simplify(h*AA(:,i)-(1/2)*h(1,i)*AA(1,i)-(1/2)*h(1,5)*AA(5,1));
在代码最后加一句:
c

jgchen1973 发表于 2008-6-14 17:57

谢谢10楼

很高兴,我按照你给我说的改了,结果很好,以后还会经常麻烦你和大家!如果可能,大家交个朋友,我的邮箱jgchen1973@163.com
谢谢了!

jgchen1973 发表于 2008-6-14 19:12

如果进行下一步编程又会出现问题

我想把上面这个程序作为一个子程序被另一个程序调用,可是又总是出现问题,不知道这是为何?
假如:我把这个程序定义为:
=mymain(n)
当然里面的一些参数也作了改变,可是运行是他总是出现错误提示:
??? Index exceeds matrix dimensions.

Error in ==> mymain at 15
    c(1,i)=h*AA(:,i)-(1/2)*h(1,1)*AA(1,i)-(1/2)*h(3,1)*AA(3,i)
我就不知道为何了!

ch_j1985 发表于 2008-6-14 19:43

原帖由 jgchen1973 于 2008-6-14 19:12 发表 http://www.chinavib.com/forum/images/common/back.gif
我想把上面这个程序作为一个子程序被另一个程序调用,可是又总是出现问题,不知道这是为何?
假如:我把这个程序定义为:
=mymain(n)
当然里面的一些参数也作了改变,可是运行是他总是出现错误提示:
??? Index ex ...
c(1,i)=h*AA(:,i)-(1/2)*h(1,1)*AA(1,i)-(1/2)*h(3,1)*AA(3,i)
红色的地方是不是有错误?
页: [1] 2
查看完整版本: 这个程序如何编制