声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2017|回复: 6

[工具箱] 我自己写了个工具包,但是有问题,帮忙看一下

[复制链接]
发表于 2013-7-1 16:01 | 显示全部楼层 |阅读模式

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

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

x
  function [X]=dct(xn)
N=length(xn);
sum=0;
for n=1:N
    sum=sum+xn(n);
end
X(0)=sum2*sqrt(N);
for k=1:N-1
    sum2=0;
    for n=1:N
        sum2=sum2+xn(n)*cos((2*n+1)*k*pi/(2*N));
    end
    X(k)=sum2*sqrt(2/N);
end
不胜感激

回复
分享到:

使用道具 举报

发表于 2013-7-2 21:41 | 显示全部楼层
1.与工具箱有关係?
2.若有报错的,应给齐讯息; 若没报错的就不是编程问题吧
 楼主| 发表于 2013-7-3 09:52 | 显示全部楼层
我用上面的程序做工具包,写的下面程序
clc;
clear;
f=50;
fs=1000;
N=1000;
n=0:N-1;
xn=cos(2*pi*f*n/fs);
y=dct(xn);
num=find(abs(y)<5);
y(num)=zeros(size(num));
zn=idct(y);
figure(2);
subplot(211),plot(n,xn);
subplot(212),plot(n,zn);
rp=100-norm(xn-zn)/norm(xn)*100;

结果出现错误

??? Attempt to execute SCRIPT dct as a function:
D:\My Documents\MATLAB\dct.m

Error in ==> dct at 8
y=dct(xn);

是不是我开始写的工具包错了
发表于 2013-7-3 20:24 | 显示全部楼层

看到报错讯息, 可以确定LZ方向错误!

工具包是什麼!? 不懂
但1F的m文件, 会报错
??? Undefined function or variable "sum2".

Error in ==> dct at 7
X(0)=sum2*sqrt(N);


不过LZ的错误可能还出现在更前端!?
看看下帖6F
常见的程序出错问题整理 http://www.chinavib.com/thread-46001-1-1.html
(from http://home.chinavib.com/blog-63979-18250.html)
 楼主| 发表于 2013-7-5 20:24 | 显示全部楼层
ChaChing 发表于 2013-7-3 20:24
看到报错讯息, 可以确定LZ方向错误!

工具包是什麼!? 不懂

谢谢了,终于知道哪错了
仔细查找了下原因是因为文件名取错了改为dct1或者其它都可以了,不能用matlab内部自带的函数名来命名。
发表于 2013-7-6 10:16 | 显示全部楼层
石头王石头 发表于 2013-7-5 20:24
谢谢了,终于知道哪错了
仔细查找了下原因是因为文件名取错了改为dct1或者其它都可以了,不能用matlab内 ...
...不能用matlab内部自带的函数名来命名...

严谨而言, 是能以内部自带的函数名来命名的, 不过若不清楚如何控制的话, 使用不同名是个安全的做法
发表于 2013-7-6 18:05 | 显示全部楼层
石头王石头 发表于 2013-7-5 20:24
谢谢了,终于知道哪错了
仔细查找了下原因是因为文件名取错了改为dct1或者其它都可以了,不能用matlab内 ...

楼上说的很有道理。
我记得如果把函数定义为子函数。函数名和matlab内部函数重名就不要紧了
因为子函数优先级高。你可以试一下。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-25 23:21 , Processed in 0.103717 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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