声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2896|回复: 14

[编程技巧] 请指教matlab中的卷积问题

[复制链接]
发表于 2006-10-21 16:27 | 显示全部楼层 |阅读模式

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

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

x
请问我这么写问题在哪里
我是刚刚开始用,请大家多多指教哈
  谢谢
t=1:10;
t1=1:10;
a=sin(t);
b=sinc(t1);

c=CONVMTX(a,b);
stem(c);
xlim([0 20])

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2006-10-21 16:44 | 显示全部楼层
原帖由 shally628 于 2006-10-21 16:27 发表
请问我这么写问题在哪里
我是刚刚开始用,请大家多多指教哈
  谢谢
t=1:10;
t1=1:10;
a=sin(t);
b=sinc(t1);

c=CONVMTX(a,b);
stem(c);
xlim()


用conv命令
 楼主| 发表于 2006-10-21 17:10 | 显示全部楼层
但是用conv函数就会报错

Attempt to execute SCRIPT conv as a function.
发表于 2006-10-21 17:14 | 显示全部楼层
原帖由 shally628 于 2006-10-21 17:10 发表
但是用conv函数就会报错

Attempt to execute SCRIPT conv as a function.



把你自己命名的文件改名,conv是matlab自带的函数,你用which conv all命令看看就知道了

看来这个问题真的挺严重
 楼主| 发表于 2006-10-21 17:20 | 显示全部楼层
那我该怎么办呀?
你能不能给我一个正确使用卷积的例子
万分感谢呀
发表于 2006-10-21 17:27 | 显示全部楼层
原帖由 shally628 于 2006-10-21 17:20 发表
那我该怎么办呀?
你能不能给我一个正确使用卷积的例子
万分感谢呀


1. 在matlab命令窗口输入:which conv all
    把除了下面路径以外的m文件全部删除:<your matlab path>\toolbox\matlab\datafun\conv.m,即只保留这个
2. 在m文件编辑窗口中输入以下代码:
function myConv
t=1:10;
a=sin(t);
b=sinc(t);

c=conv(a,b);
stem(c);
xlim([0 20])

3. 把函数保存为myConv.m
4. 运行
 楼主| 发表于 2006-10-21 17:41 | 显示全部楼层
ok
太感谢你了

我是新手
以后希望能够多向你请教哈
发表于 2006-10-21 17:44 | 显示全部楼层
原帖由 shally628 于 2006-10-21 17:41 发表
ok
太感谢你了

我是新手
以后希望能够多向你请教哈



建议多浏览本论坛或者其他论坛的帖子,特别是 for beginner 的
 楼主| 发表于 2006-10-21 17:50 | 显示全部楼层
原帖由 eight 于 2006-10-21 17:27 发表


1. 在matlab命令窗口输入:which conv all
    把除了下面路径以外的m文件全部删除:<your matlab path>\toolbox\matlab\datafun\conv.m,即只保留这个
2. 在m文件编辑窗口中输入以下代码:
functio ...



我还想请问一下,我开头到底是问什么问题了


谢谢哈
发表于 2006-10-21 18:58 | 显示全部楼层
原帖由 shally628 于 2006-10-21 17:50 发表



我还想请问一下,我开头到底是问什么问题了


谢谢哈



matlab不支持两个同名同输入参数的函数,事实上,没有一种语言支持
 楼主| 发表于 2006-10-21 23:01 | 显示全部楼层
原帖由 eight 于 2006-10-21 18:58 发表



matlab不支持两个同名同输入参数的函数,事实上,没有一种语言支持


不好意思,我没有懂你的意思


你能具体的给我说一下,开头我的程序哪里有问题好吗



谢谢
发表于 2006-10-22 10:08 | 显示全部楼层
原帖由 shally628 于 2006-10-21 23:01 发表


不好意思,我没有懂你的意思


你能具体的给我说一下,开头我的程序哪里有问题好吗



谢谢


你按照我给你的第一步做了以后,是否发现除了那个路径以外还有其他同名函数?你把自定义的函数命名为matlab自带的函数,是不允许的,明白吗?
 楼主| 发表于 2006-10-22 10:18 | 显示全部楼层
原帖由 eight 于 2006-10-22 10:08 发表


你按照我给你的第一步做了以后,是否发现除了那个路径以外还有其他同名函数?你把自定义的函数命名为matlab自带的函数,是不允许的,明白吗?


我按照你给我说的第一步做了之后只有一个函数,然后我也没管他,我就在我的函数前面加了个function myconv1   然后把我函数存在了work目录下(开头没有)


而且我不晓得为什么我的卷积结果还是不对
发表于 2006-10-22 10:25 | 显示全部楼层
原帖由 shally628 于 2006-10-22 10:18 发表


我按照你给我说的第一步做了之后只有一个函数,然后我也没管他,我就在我的函数前面加了个function myconv1   然后把我函数存在了work目录下(开头没有)


而且我不晓得为什么我的卷积结果还是不对


我刚才试了一下你原来的程序,没有出现你说的错误,运行正常,不过弹出的figure中没有任何东西,不知道你当时如何操作的。至于你说的卷积结果不对,是什么意思呢?conv函数就是求一维卷积的,二维用conv2
 楼主| 发表于 2006-10-22 10:52 | 显示全部楼层
原帖由 eight 于 2006-10-22 10:25 发表


我刚才试了一下你原来的程序,没有出现你说的错误,运行正常,不过弹出的figure中没有任何东西,不知道你当时如何操作的。至于你说的卷积结果不对,是什么意思呢?conv函数就是求一维卷积的,二维用conv2


其实我是用在这个里面的:

clc;
clear;
fs=40/pi;Ts=1/fs;A=0;B=10;
t1=-100*pi:0.01:1*100*pi;
y=sin(B*t1+A);
subplot(4,1,1);
  
plot(t1,y);axis([-4 4,-1 1]);
subplot(4,1,2);
t2=-100*pi:Ts:100*pi;
y2=sin(B*t2+A);
stem(t2,y2);
   axis([-4 4,-1 1]);
  t3=-100*pi:Ts:100*pi;
h=sinc(B*t3);
subplot(4,1,3);
stem(t3,h);
axis([-4 4,-1 1]);
y3=CONV(y2,h);
subplot(4,1,4);
  plot(y3);

本来是想用卷积恢复信号的,结果卷积出来结果就不对
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-19 22:45 , Processed in 0.060642 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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