声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1226|回复: 13

[编程技巧] 恳请指点函數使用

[复制链接]
发表于 2009-5-12 17:26 | 显示全部楼层 |阅读模式

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

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

x
主程序如下:

%Ch413
%清零
clear all;
clc;
%定义h和x
h=[1,2,-1,1];
M=length(h)-1;
x=[1,1,2,1,2,2,1,1];
L=length(x);
%计算h和x的卷积
y=matcon(x,h);      
%此处交换x和h的位置不影响结果,即y=Hx或y=Xh
Ly=length(y);
%输出结果
[L M Ly]
y

包含的matcon.m如下:

%用矩阵相乘的方法计算卷积
function y=matcon(x,h)
L=length(x);
M=length(h)-1;
H=zeros(L+M,L);    %初始化H矩阵
for i=1:L
   H(i:M+i,i)=h ;  %给H矩阵赋值
end
%计算输出y
y=H*x';            %x'为列矩阵
y=y';              %最后输出y为行矩阵

最后运行时报错:???  In an assignment  A(matrix,matrix) = B, the number of rows in B
and the number of elements in the A row index matrix must be the same.
Error in ==> C:\MATLAB6p5\work\matcon.m
On line 8  ==>    H(i:M+i,i)=h ;  %给H矩阵赋值  
我还是一个初学者,不知道这句话里哪错了.还请大侠指点,谢谢

[ 本帖最后由 ChaChing 于 2009-5-16 00:27 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-5-12 17:31 | 显示全部楼层
x和h的列元素数量应该相同。。。
发表于 2009-5-12 20:04 | 显示全部楼层
运行正常,没有错误:
ans =

     8     3    11

y =

     1     3     3     5     3     7     4     3     3     0     1
 楼主| 发表于 2009-5-12 20:08 | 显示全部楼层

回复 板凳 friendchj 的帖子

不对,运行不出结果的~
 楼主| 发表于 2009-5-12 20:50 | 显示全部楼层

回复 板凳 friendchj 的帖子

matcon.m中的h应改成为h’
发表于 2009-5-12 21:50 | 显示全部楼层

回复 5楼 fenglingcao 的帖子

hehe,我是直接运行的。我的matlab版本是R2008a
发表于 2009-5-12 22:02 | 显示全部楼层
奇! 我特地回v6.5执行下!
结果同3F!
 楼主| 发表于 2009-5-13 12:04 | 显示全部楼层

回复 6楼 friendchj 的帖子

难道是偶的版本太旧了,kaka~
发表于 2009-5-13 15:02 | 显示全部楼层
...Error in ==> C:\MATLAB6p5\work\matcon.m
On line 8 ==> H(i:M+i,i)=h ; %给H矩阵赋值 ...

LZ的版本已试过! 没错丫?
 楼主| 发表于 2009-5-13 22:21 | 显示全部楼层
又运行了一次,没有出现昨天的问题。不过还是有个小小的ERROR~
ans =     8     3    11


y =     1     3     3     5     3     7     4     3     3     0     1

??? 包含的matcon.m如下:
    |
Error: Missing variable or function.
发表于 2009-5-14 08:38 | 显示全部楼层
...
??? 包含的matcon.m如下:
    |
Error ...

LZ输入这段吗?
 楼主| 发表于 2009-5-15 22:33 | 显示全部楼层

回复 11楼 ChaChing 的帖子

若将matcon.m单独存于C:\MATLAB6p5\work下,则运行如1楼所示报错。而若将1楼整段程序输入,出现后面那种情况~

[ 本帖最后由 fenglingcao 于 2009-5-15 22:34 编辑 ]
发表于 2009-5-16 00:22 | 显示全部楼层
若将matcon.m单独存于搜寻路径下, 即为m函数, 是没报错的!
LZ一定那里没注意到, 建议LZ另外程序亦存成Ch413.m档, 执行Ch413即可!
若将1楼整段程序输入命令窗,中间有"包含的matcon.m如下:"等字眼, 并非matlab语句, 当然报错(如10F)

还有建议楼主先看下function相关帮助文献

[ 本帖最后由 ChaChing 于 2009-5-16 00:32 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2009-5-16 09:30 | 显示全部楼层

回复 13楼 ChaChing 的帖子

恩,我再试试~
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-14 17:56 , Processed in 0.062438 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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