Re: [問題]矩陣跑迴圈已回收

看板MATLAB作者 (~火火狗)時間14年前 (2011/09/02 16:24), 編輯推噓1(1011)
留言12則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《LMH02 (LMH02)》之銘言: : 就是我現在有一個f2是<246255x1 double>的矩陣, : 想要寫出的是每隔30秒抓出那一定範圍內的最大值, : 下面是我寫的程式, : for i = 1:40 : [Y_A1(i) I_A1(i)] = max(f2(28+(i-1)*30)*200:(28+(i-1)*30+4)*200); : end : 可是問題出現在Y_A1上, : 他抓出來的矩陣變成<1x40 double> : 然後對應的數值跟f2的數值完全不同, : 不知道要用什麼方法才能把它變成40x1, : 還是有什麼方法能抓出數值呢? : 懇請指教! 這個max()裡面運算式,可以簡化成這樣max(a:b) 在冒號(:)前面值假設1000 在冒號(:)後面值假設20000 會搜尋1000到20000的的最大值 這樣找到最大值一定都是b... 如果在冒號(:)前面值假設20000 在冒號(:)後面值假設1000 這樣找到最大值是空的,MATLAB(a:b)基本只能由小到大。 程式碼簡化(對MATLAB來說運算時間沒有差) max(f2((i-1)*30+28):((i-1)*30+32))*200 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.6.148 ※ 編輯: s123123sam 來自: 140.127.6.148 (09/02 16:25) ※ 編輯: s123123sam 來自: 140.127.6.148 (09/02 16:32)

09/02 18:40, , 1F
這是錯的...[1,3,5]跟[5,3,1] max找到的最大值沒理由不一樣
09/02 18:40, 1F

09/02 19:38, , 2F
感謝提醒,不郭MATLAB的a:b,數字要由大到小要改寫成
09/02 19:38, 2F

09/02 19:39, , 3F
     過
09/02 19:39, 3F

09/02 19:39, , 4F
     不過
09/02 19:39, 4F

09/02 19:41, , 5F
a:c:b,例如:a=10 b=1 c=-1。這樣才會搜尋到一樣
09/02 19:41, 5F

09/02 21:47, , 6F
原po是在找f2矩陣裡頭的max...
09/02 21:47, 6F

09/02 21:48, , 7F
你講的只是a=1000:2000跟a=2000:1000差別 後者是空集合
09/02 21:48, 7F

09/02 21:48, , 8F
因為當你省略1000:2000中間的tick時,MATLAB會認為是1
09/02 21:48, 8F

09/02 21:49, , 9F
然後這跟原po的問題沒有關係...
09/02 21:49, 9F

09/02 23:43, , 10F
謝謝大家的指教! 後來發現是max小括號有少所以數值才很奇怪
09/02 23:43, 10F

09/02 23:43, , 11F
問題已經解決了謝謝!!
09/02 23:43, 11F

09/03 03:02, , 12F
恩,不好意思這是我的疏失。
09/03 03:02, 12F
文章代碼(AID): #1EO9Av0W (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1EO9Av0W (MATLAB)