看板 MATLAB 關於我們 聯絡資訊
您好 我有一個矩陣 簡化為 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
s4300026: find? 07/09 17:44
BKD858: find完加上360後要怎麼回歸成原本的排序方式 07/09 17:46
celestialgod: 假設m是你的矩陣 07/09 17:53
celestialgod: m(1, m(:, 2)<0)=m(1, m(:, 2)<0)+360 07/09 17:54
celestialgod: 更正m(:, m(:, 2)<0)=m(:, m(:, 2)<0)+360 07/09 17:55
BKD858: 謝謝!但現在出現Index exceeds matrix dimensions維數錯誤 07/09 18:05
s4300026: find是找矩陣index,不影響排序阿... 07/09 18:22
BKD858: 請問可以在解釋詳細一點 目前卡在加完360後如何排回去原本 07/09 18:32
BKD858: 矩陣中 07/09 18:32
BKD858: QQ 試出來了 a(find(a>0))=a(a<0)+360.... 07/09 18:50
sunev: 如果是角度問題,用mod可能直接一點m(:,2)=mod(m(:,2),360) 07/09 23:35
anticrime: 可以試試看這樣,假設矩陣為A 07/10 10:40
anticrime: A(:,2) = A(:,2)+(A(:,2)<0)*360; 07/10 10:41
anticrime: 這樣<0的部分就會+360了 07/10 10:41
celestialgod: 我的可以啊,你的維度是不是2 X N不是 n X 2 07/10 12:01
celestialgod: 你的find那個要注意 如果第一行有負的也會變成正 07/10 12:02
celestialgod: 沒辦法應對只想改部分矩陣的情況 07/10 12:03
BKD858: 嗯我知道!我第一排原始資料是時間序列!所以OK 是N*2 07/10 16:08
BKD858: 感謝各位先進!小弟受益匪淺~ 07/10 16:11
name0625: 如果矩陣為A B=(A<0)*360; A=A+B; 如果第一行會出現<0 07/14 20:22
name0625: 眼殘沒看到有人回... 07/14 20:23