回 帖 发 新 帖 刷新版面

主题:新手请教

这个程序直接在命令窗口中可以运行,在m文件中不可以为什么,请指点
function [Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('wname')
>> [Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('db5');
>> subplot(2,2,1);
>> stem(Lo_D);
>> title('Decomposition low-pass filter');
>> subplot(2,2,2);stem(Hi_D);
>> title('Decomposition high-pass filter');
>> subplot(2,2,3);stem(Lo_R);
>> title('Reconstruction low_pass filter');
>> subplot(2,2,4);stem(Hi_R);
>> title('Reconstruction  high_pass filter');
>> xlabel('The four filters for db5');
??? Error: File: db5bianhuan.m Line: 2 Column: 1
Unexpected MATLAB operator.

回复列表 (共3个回复)

沙发

建议到MATLAB 里 doc 一下,就会发现 wfilters 这是MATLAB 自带的“函数”,你有见过自己编写三角函数 sin(x) 的吗?出现错误与MATLAB 本身就有这个函数有关,而你的函数名对这个函数重新定义,这与自带的函数冲突
下面,供参考
function [Lo_D,Hi_D,Lo_R,Hi_R]=DB % 这里随便换个不重名就可以
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('db5');
subplot(2,2,1);
stem(Lo_D);
title('Decomposition low-pass filter');
subplot(2,2,2);stem(Hi_D);
title('Decomposition high-pass filter');
subplot(2,2,3);stem(Lo_R);
title('Reconstruction low_pass filter');
subplot(2,2,4);stem(Hi_R);
title('Reconstruction  high_pass filter');
xlabel('The four filters for db5');

板凳

还是不行啊,变成
??? function [Lo_D,Hi_D,Lo_R,Hi_R]=DB()
    |
Error: Function definitions are not permitted at the prompt or in scripts.
再次请教,谢谢

3 楼

估计你MATLAB版本较低,MATLAB7.8上function [Lo_D,Hi_D,Lo_R,Hi_R]=DB()是可以的,直接在命令窗口中写入DB()就可以,你可以把括号去掉,在命令窗口中直接写入DB,再次运行,应该没问题的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册