![]() |
[求助]关于在LABVIEW中插入的MATLAB脚本问题--------急!
我在LABVIEW中插入MATLAB脚本对信号进行分析。但是出现错误(subscript indices must either be real positive integers or logicals)。我不清楚怎么修改。下面是我编的M文件的程序,主要是求一维数组s的最大值和索引位置,然后加不同宽度的窗,求出窗里信号能量后与总能量求比值。我编的程序中s是小波包分析的高频信号,为了简化程序段,我用5000个随机数来代替。编译的时候for循环好像根本就没有执行,index的值好像一直都是0.不知道是为什么。这两天老师还催着要实验数据。请前辈们帮忙看看,不胜感激!
s=zeros(1,5000); s=rand(1,5000); n=length(s); max=0.0; index=0; for i=1:n if max<s(i) max=s(i); index=i; else end end small=100; wenergys=sum(s(index-small:index+small).^2); middle=150; wenergym=sum(s(index-middle:index+middle).^2); large=200; wenergyl=sum(s(index-large:index+large).^2); energy=sum(s.^2); ratios=wenergys/energy; ratiom=wenergym/energy; ratiol=wenergyl/energy; m=max*100000; ws=wenergys*100000; wm=wenergym*100000; wl=wenergyl*100000; e=energy*100000; a=[m,index,e,ws,wm,wl,ratios,ratiom,ratiol]; |
回复: [求助]关于在LABVIEW中插入的MATLAB脚本问题--------急!
因为Matlab中求最大值的函数是max,你最好不要在程序中与函数名相同名称的作为赋值变量,所以你最好把你程序中的max等用别的字母替换,T、G什么的都可以。
其实你要求矩阵s的最大值,只要max(s)就得到了,不要循环这么麻烦:smile: |
回复: [求助]关于在LABVIEW中插入的MATLAB脚本问题--------急!
你的错误与LabVIEW没关系,是MatLab自身编译出错,最好先对m文件在Matlab中运行,验证正确后再放到LabVIEW中
|
所有时间均为北京时间。现在的时间是 12:10。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.