久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 4291|回復: 4

[matlab] 這段程序出錯,不清楚怎么改

[復制鏈接]
1#
發表于 2008-8-25 11:14:56 | 只看該作者 |倒序瀏覽 |閱讀模式
下面是我編的M文件的程序,主要是求一維數組s的最大值和索引位置,然后加不同寬度的窗,求出窗里信號能量后與總能量求比值。我編的程序中s是小波包分析的高頻信號,為了簡化程序段,我用5000個隨機數來代替。編譯的時候for循環好像根本就沒有執行,不知道是為什么。請前輩們幫忙看看,不勝感激!; T' y, g% R- V& {
s=zeros(1,5000);
/ C( {2 W! ^/ f# @$ p% ws=rand(1,5000);
- [# ^- E, }" Q) Q$ u; m! T, [2 R4 F  Zn=length(s);( ^& {1 h5 ]0 N9 V% S. O+ H4 ?# H
max=0.0;
$ q! l' i3 H* aindex=0;
2 j: T% u# J& u  yfor i=1:n
3 W/ M" e, m+ j5 W if  max<s(i); I2 [( P! f+ z! G. r! X
     max=s(i);9 x* Y9 U' W8 A( U3 [
     index=i;
. S: f: O/ A& H& b  else  y4 V( ?! E3 [: X/ |
  end# u: k/ `* R0 o4 r$ [9 L
end   
9 S$ Z' g9 J1 E" m1 gsmall=100;
( v  R" ^$ u% K# N. A8 Qwenergys=sum(s(index-small:index+small).^2);
) ?  V2 ]1 J( M. e; r/ `; Imiddle=150;1 N6 u0 ~! E$ f+ U
wenergym=sum(s(index-middle:index+middle).^2);
1 |; ?- k" H( w  m$ y' Q4 |; j* I- dlarge=200;* H' g" [6 P5 h3 ?
wenergyl=sum(s(index-large:index+large).^2);* S- `. \9 M! \
energy=sum(s.^2);
# ^. H; o! B& D( x' nratios=wenergys/energy;
8 I. [, R7 o+ ?- N6 v; f! Q6 @ratiom=wenergym/energy;* O3 |3 F. c2 Z2 N2 h
ratiol=wenergyl/energy;
" I9 x+ c5 u8 h$ j8 Mm=max*100000;4 C4 m% ?% F8 \% P& q: p1 ^% R
ws=wenergys*100000;+ x+ x  u# C, F# r+ }
wm=wenergym*100000;
9 V- }. @3 I8 p0 W- ~) s5 Cwl=wenergyl*100000;
( q# {0 j5 l0 x+ je=energy*100000;- j$ [- j2 V8 M+ X" {
a=[m,index,e,ws,wm,wl,ratios,ratiom,ratiol];
回復

使用道具 舉報

2#
發表于 2008-8-26 13:20:56 | 只看該作者
求一維數組s的最大值和索引位置 max 和index可以求出來呀
& l0 H4 E+ p. r/ E也就是執行了for循環了
& |' Z7 Y  @* Y; B  [可能計算機計算速度快  我們感覺不到等待的時間    . n) g8 {! N) h( e
如果是5000個數字迭代的話肯能時間很長

評分

參與人數 1威望 +10 收起 理由
老鷹 + 10

查看全部評分

3#
 樓主| 發表于 2008-8-28 16:09:39 | 只看該作者

回復 2# 小土匪 的帖子

其實我的這個程序是插在labview里的腳本。我一開始用的就是[max,index]=max(s);但是我是把程序作為腳本插入在labview程序里,labview提示出錯:subscript indices must either be real positive integers or logicals. 然后就不給我執行了,改成for循環也一樣。5000個數字迭代時間并不長,我在MATLAB里面試過,瞬間出結果,但是在labview里編譯就是通不過。我現在懷疑是不是labview和MATLAB的兼容做的不夠好。
4#
發表于 2008-8-29 17:20:28 | 只看該作者
labview還沒接觸過
% }% N) ~; [) O( d$ E" R是不是取隨機數的時候  最大值的標號正好小于200了  這樣的話wenergyl=sum(s(index-large:index+large).^2)這步是不是會出錯?0 j* \* m7 e2 k) `

2 P% m! M3 L. \7 y提示也正好是indices must either be real positive integers or logicals- r; ~3 W9 B8 }. C
你再修改下隨即數?
5#
發表于 2008-8-29 17:23:09 | 只看該作者
Subscript indices must either be real positive integers or logicals
/ V9 F. O( l; ^4 R! xR$ P# O9 A3 s
1 G8 U) h1 N- J2 L) y" h中文解釋:下標索引必須是正整數類型或者邏輯類型
7 W2 P3 E7 E' }; N1 N) a( t; D1 KW7 b# p# ]3 I' k8 m8 s0 X6 c- ~" u( @9 w
出錯原因:在訪問矩陣(包括向量、二維矩陣、多維數組,下同)的過程中,下標索引要么從 0 開始,要么出現了負數。注:matlab 的語法規定矩陣的索引從 1 開始
: g$ n  d1 t" I8 B' I6 d9 e  m; h: f4 |5 y- g1 [* t% ~: ?

! N' `. k3 F7 b這是網上搜到的資料   借鑒下
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-7-5 13:37 , Processed in 0.077643 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表