国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 4385|回復: 4

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

[復制鏈接]
1#
發表于 2008-8-25 11:14:56 | 只看該作者 |倒序瀏覽 |閱讀模式
下面是我編的M文件的程序,主要是求一維數組s的最大值和索引位置,然后加不同寬度的窗,求出窗里信號能量后與總能量求比值。我編的程序中s是小波包分析的高頻信號,為了簡化程序段,我用5000個隨機數來代替。編譯的時候for循環好像根本就沒有執行,不知道是為什么。請前輩們幫忙看看,不勝感激!
+ C! X8 @$ s0 `s=zeros(1,5000);; u1 ?% t2 Z9 f9 t: d
s=rand(1,5000);% P) R! S- I* |7 q
n=length(s);, {+ N% ~0 ~) K& F9 w3 {
max=0.0;
) X2 ?+ I, N7 \2 f+ k$ M: ^3 tindex=0;6 v- H2 m- z$ ?) `
for i=1:n
: g4 u6 T0 y: S9 A; y. s if  max<s(i)  I' @7 T, Y, k# @! x% ], D: h
     max=s(i);  J) |  O# L/ h( d
     index=i;
1 q% p- `$ z/ t& X' M6 E' [  else
6 `2 ]  R6 m0 @  end
/ C2 m. W4 B8 A4 D3 c5 Wend   1 P/ [+ D' P8 B. ?# V
small=100;
  }9 n* |" n0 t+ {4 K6 nwenergys=sum(s(index-small:index+small).^2);
8 m7 Y' c  Y8 F* F, C- Imiddle=150;" m0 p0 ]9 p( O; A, r* F
wenergym=sum(s(index-middle:index+middle).^2);
' v2 |5 P; b6 E% C3 M0 nlarge=200;, P! i& G1 F, I- f) l
wenergyl=sum(s(index-large:index+large).^2);) ]. t: K" ~2 [
energy=sum(s.^2);
% G9 z, M2 v5 V5 J( Z7 l+ t- |ratios=wenergys/energy;) W! c8 d7 E; [  [$ e" v
ratiom=wenergym/energy;7 k: r' R% M1 P% g& C" g. @
ratiol=wenergyl/energy;! x8 y9 D4 c) m9 ?- ]+ ~' f! v/ K8 m, x
m=max*100000;
4 l8 n/ p# @3 F7 E! tws=wenergys*100000;
6 ~1 M. h8 g* c5 [# v9 Bwm=wenergym*100000;
% m! e# G* O$ h2 n) L7 Kwl=wenergyl*100000;
$ H8 R! F3 {! o1 q; Le=energy*100000;" q6 ]: u' a" O! u& \
a=[m,index,e,ws,wm,wl,ratios,ratiom,ratiol];
回復

使用道具 舉報

2#
發表于 2008-8-26 13:20:56 | 只看該作者
求一維數組s的最大值和索引位置 max 和index可以求出來呀: ]6 I0 W& G8 K( i, i7 [: T0 r
也就是執行了for循環了
; `* [' p6 A" l" T/ T可能計算機計算速度快  我們感覺不到等待的時間    0 T! D* b. ^3 A2 U; ]: b
如果是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還沒接觸過
  M, U, ?' G* A  J是不是取隨機數的時候  最大值的標號正好小于200了  這樣的話wenergyl=sum(s(index-large:index+large).^2)這步是不是會出錯?
9 J; ]7 [! p( `9 b) H1 i8 }0 N# M) A9 r! m3 i3 F7 R" ^
提示也正好是indices must either be real positive integers or logicals
  |- t+ l+ b* s8 [4 R7 l- O8 t; o你再修改下隨即數?
5#
發表于 2008-8-29 17:23:09 | 只看該作者
Subscript indices must either be real positive integers or logicals: M+ g( W7 C  U$ D) ^. \2 c& s
R$ P# O9 A3 s7 p6 f8 ~8 ?- S+ d" G( _$ X
中文解釋:下標索引必須是正整數類型或者邏輯類型  Y7 T9 X: y6 E$ E5 L' _
W7 b# p# ]3 I' k8 m) L3 |( I' f% _
出錯原因:在訪問矩陣(包括向量、二維矩陣、多維數組,下同)的過程中,下標索引要么從 0 開始,要么出現了負數。注:matlab 的語法規定矩陣的索引從 1 開始3 q& M) o  F! a' _% B5 L$ k. `

+ E! m' M' V7 x# T' ?* w0 I, }" u; ?& Z
這是網上搜到的資料   借鑒下
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

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

GMT+8, 2025-9-7 14:26 , Processed in 0.071949 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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