查看: 3994|回复: 5|关注: 0

[已解决] 未定义与 'function_handle' 类型的输入参数相对应的运算符 '.*'

[复制链接]

新手

9 麦片

财富积分


050


5

主题

18

帖子

0

最佳答案
本帖最后由 三寸日光 于 2018-3-13 08:51 编辑

程序运行显示        21行hn=hd.*wn;         未定义与 'function_handle' 类型的输入参数相对应的运算符 '.*',怎么解决
  1. ts=2.5*(10^(-6));         %采样周期;
  2. fb=54687;                 %信号带宽;
  3. Fs=4*(10^5);                %采样频率;
  4. f0=63282;                 %中心频率;
  5. wc=2*f0*pi/Fs;
  6. fp=35231;                 %通带截止频率;
  7. wp=2*fp*pi/Fs;
  8. fs=89918;                 %阻带截止频率;
  9. ws=2*fs*pi/Fs;
  10. tr_width=ws-wp;           %计算过渡带宽;
  11. N0=ceil(8*pi/tr_width); %根据过渡带宽度求滤波器窗长
  12. N=N0+mod(N0+1,2);         %确保N为奇数
  13. m=(N-1)/2;                %计算移位系数
  14. n=0:1:N-1;
  15. a=0.39;
  16. b=0.37;
  17. r=1-a-b;                  %a、b、r值;
  18. wn=@(n,N,a,b,r)(a-b*cos(2*pi.*n./(N-1))+r*sin(pi.*n./(N-1))).*(n>=0 & n<=(N-1)/2)+(0.54-0.46*cos(2*pi.*n./(N-1))).*(n>=(N+1)/2 & n<=N-1);
  19. nm=n-m+eps;
  20. hd=sin(wc*nm)./(pi*nm);%单位脉冲响应
  21. hn=hd.*wn;
  22. [H,m]=freqz(wn,1,256,'whole');%计算窗函数的频率特性
  23. mag=abs(H);%计算幅度特性
  24. db=20*log10((mag+eps)/max(mag));%将幅度特性转换为对数形式
  25. pha=angle(H);%计算相位特性
  26. subplot(121);%绘制幅度特性曲线
  27. plot(m/pi,db);axis([-inf inf -180 0]);
  28. xlabel('w/pi');ylabel('db');title('幅度特性');grid on;
  29. subplot(122);%相位特性曲线
  30. plot(m/pi,pha);axis([-inf inf -pi pi]);
  31. xlabel('w/pi');ylabel('rad');title('相位特性');grid on;
复制代码


论坛优秀回答者

中级

757 麦片

财富积分


5001500


2

主题

641

帖子

142

最佳答案
  • 关注者: 16
发表于 2018-3-13 08:59:48 | 显示全部楼层
应该是wn不对。
运行了下,wn的值为:
wn =

  function_handle with value:

    @(n,N,a,b,r)(a-b*cos(2*pi.*n./(N-1))+r*sin(pi.*n./(N-1))).*(n>=0&n<=(N-1)/2)+(0.54-0.46*cos(2*pi.*n./(N-1))).*(n>=(N+1)/2&n<=N-1)


你检查一下,wn的指标是不是错了。

新手

9 麦片

财富积分


050


5

主题

18

帖子

0

最佳答案
 楼主| 发表于 2018-3-13 09:08:58 | 显示全部楼层
TCCMATLAB 发表于 2018-3-13 08:59
应该是wn不对。
运行了下,wn的值为:
wn =

不知道wn这样描述是否正确
IMG_20180312_093657.jpg

MATLAB 基础讨论
版块优秀回答者

中级

544 麦片

财富积分


5001500


0

主题

732

帖子

111

最佳答案
  • 关注者: 18
发表于 2018-3-13 09:43:36 来自手机 | 显示全部楼层 |此回复为最佳答案
三寸日光 发表于 2018-3-13 08:33
程序运行显示        21行hn=hd.*wn;         未定义与 'function_handle' 类型的输入参数相对应的运算符 ' ...

把hn.wn中的wn改成wn(n,N,a,b,r)
记得记我一功
来自: 微社区

新手

9 麦片

财富积分


050


5

主题

18

帖子

0

最佳答案
 楼主| 发表于 2018-3-13 10:54:13 | 显示全部楼层
土木小王子 发表于 2018-3-13 09:43
把hn.wn中的wn改成wn(n,N,a,b,r)
记得记我一功

貌似wn的表达还是有问题

untitled.png

新手

10 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 2018-6-29 22:18:04 | 显示全部楼层
请问下,你是怎么复制matlab程序的,你上面的帖子有行数,我复制的时候怎么没有行数,你是怎么做到的?:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

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