[問題]矩陣判斷

看板MATLAB作者 (Pz)時間10年前 (2015/07/09 16:08), 10年前編輯推噓4(4017)
留言21則, 6人參與, 最新討論串1/1
您好 我有一個矩陣 簡化為 12 25 14 54 16 -14 54 -47 57 22 61 44 74 -50 . . . . . . 現在我想把判斷第二行小於0的值加上360 並輸出為 12 25 14 54 16 346 54 313 57 22 61 44 74 310 . . . 不想用if(矩陣極大),想問問看有沒比較快的矩陣方法 麻煩大家了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.35.209.175 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1436429324.A.893.html ※ 編輯: BKD858 (218.35.209.175), 07/09/2015 17:17:20

07/09 17:44, , 1F
find?
07/09 17:44, 1F

07/09 17:46, , 2F
find完加上360後要怎麼回歸成原本的排序方式
07/09 17:46, 2F

07/09 17:53, , 3F
假設m是你的矩陣
07/09 17:53, 3F

07/09 17:54, , 4F
m(1, m(:, 2)<0)=m(1, m(:, 2)<0)+360
07/09 17:54, 4F

07/09 17:55, , 5F
更正m(:, m(:, 2)<0)=m(:, m(:, 2)<0)+360
07/09 17:55, 5F

07/09 18:05, , 6F
謝謝!但現在出現Index exceeds matrix dimensions維數錯誤
07/09 18:05, 6F

07/09 18:22, , 7F
find是找矩陣index,不影響排序阿...
07/09 18:22, 7F

07/09 18:32, , 8F
請問可以在解釋詳細一點 目前卡在加完360後如何排回去原本
07/09 18:32, 8F

07/09 18:32, , 9F
矩陣中
07/09 18:32, 9F

07/09 18:50, , 10F
QQ 試出來了 a(find(a>0))=a(a<0)+360....
07/09 18:50, 10F

07/09 23:35, , 11F
如果是角度問題,用mod可能直接一點m(:,2)=mod(m(:,2),360)
07/09 23:35, 11F

07/10 10:40, , 12F
可以試試看這樣,假設矩陣為A
07/10 10:40, 12F

07/10 10:41, , 13F
A(:,2) = A(:,2)+(A(:,2)<0)*360;
07/10 10:41, 13F

07/10 10:41, , 14F
這樣<0的部分就會+360了
07/10 10:41, 14F

07/10 12:01, , 15F
我的可以啊,你的維度是不是2 X N不是 n X 2
07/10 12:01, 15F

07/10 12:02, , 16F
你的find那個要注意 如果第一行有負的也會變成正
07/10 12:02, 16F

07/10 12:03, , 17F
沒辦法應對只想改部分矩陣的情況
07/10 12:03, 17F

07/10 16:08, , 18F
嗯我知道!我第一排原始資料是時間序列!所以OK 是N*2
07/10 16:08, 18F

07/10 16:11, , 19F
感謝各位先進!小弟受益匪淺~
07/10 16:11, 19F

07/14 20:22, , 20F
如果矩陣為A B=(A<0)*360; A=A+B; 如果第一行會出現<0
07/14 20:22, 20F

07/14 20:23, , 21F
眼殘沒看到有人回...
07/14 20:23, 21F
文章代碼(AID): #1LdYmCYJ (MATLAB)
文章代碼(AID): #1LdYmCYJ (MATLAB)