声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1983|回复: 15

[编程技巧] 这个程序如何编制

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

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

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

x
我想编制一个小程序,但总是调不通,请大家给我指点一下:
for i=1:5
m=5*i;
[g,h(1,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   [g,h]=hv(m)

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

Error in ==> chebyshev at 18
    [g,h(1,i)]=hv(m);
请大家给我看看,我编的出错误在哪了,先谢谢了
回复
分享到:

使用道具 举报

发表于 2008-6-14 12:33 | 显示全部楼层
你单独运行前面试试

h只是一维的,[g,h(i)]=hv(m);这样试试
 楼主| 发表于 2008-6-14 12:54 | 显示全部楼层

回复2楼

我改了,还是不能运行,真是郁闷!还能帮我研究一下吗?
发表于 2008-6-14 13:11 | 显示全部楼层
 楼主| 发表于 2008-6-14 13:57 | 显示全部楼层

回复4楼

被调用的子函数为:
function [g,h]=hv(m)
g=cos(m*pi/6);
h=sin(m*pi/3);
形式基本就是这样的!
谢谢
发表于 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)
发表于 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

评分

1

查看全部评分

 楼主| 发表于 2008-6-14 15:59 | 显示全部楼层

如何改正啊?

我不知道如何去改啊?能否指点一下啊?谢谢了
发表于 2008-6-14 16:10 | 显示全部楼层
原帖由 jgchen1973 于 2008-6-14 15:59 发表
我不知道如何去改啊?能否指点一下啊?谢谢了

  1. clc
  2. clear
  3. for i=1:5
  4. m=5*i;
  5. [g,h(1,i)]=hv(m);
  6. end
  7. for i=1:5
  8.     m=i;
  9.       for j=1:5;
  10.           AA(j,i)=cos(m*j*pi);
  11.       end
  12.       c(1,i)=simplify(h*AA(:,i)-(1/2)*h(1,i)*AA(1,i)-(1/2)*h(1,5)*AA(5,1));
  13. end
复制代码
 楼主| 发表于 2008-6-14 16:16 | 显示全部楼层

还是不运行啊!!

我修改了还是不能运行啊!到底是啥原因啊!
 楼主| 发表于 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
我是变化了里面的关系式,如果我仅要最后一组结果,有办法控制没有啊?
发表于 2008-6-14 17:39 | 显示全部楼层
原帖由 jgchen1973 于 2008-6-14 16:47 发表
我修改后可以运行了,但是运行的结果形式如下:
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

评分

1

查看全部评分

 楼主| 发表于 2008-6-14 17:57 | 显示全部楼层

谢谢10楼

很高兴,我按照你给我说的改了,结果很好,以后还会经常麻烦你和大家!如果可能,大家交个朋友,我的邮箱jgchen1973@163.com
谢谢了!
 楼主| 发表于 2008-6-14 19:12 | 显示全部楼层

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

我想把上面这个程序作为一个子程序被另一个程序调用,可是又总是出现问题,不知道这是为何?
假如:我把这个程序定义为:
[d]=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)
我就不知道为何了!
发表于 2008-6-14 19:43 | 显示全部楼层
原帖由 jgchen1973 于 2008-6-14 19:12 发表
我想把上面这个程序作为一个子程序被另一个程序调用,可是又总是出现问题,不知道这是为何?
假如:我把这个程序定义为:
[d]=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

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-18 00:25 , Processed in 0.086697 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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