[討論] 如何改變矩陣部份元素值

看板MATLAB作者 (PA魔熊隊)時間6年前 (2018/05/04 22:36), 6年前編輯推噓4(409)
留言13則, 4人參與, 6年前最新討論串1/1
將一excel資料取出後 經指令我得到一個10*10000的矩陣data 然後如果我要考量特定條件 譬如我先找出data(:,2)<0的情況 然後直接將原矩陣data data(:,10)值做改變(乘兩倍或轉為負數) 我要怎麼做修改呢? 一個5*5矩陣G 1 2 3 4 8 1 -2 3 9 0 4 7 0 2 7 3 -2 9 8 2 2 3 7 4 1 和同列它行比較 因為G_22和G_42小於0 所以G_24和G_44要修正為原值相反數 其它不變 則新矩陣為 1 2 3 4 8 1 -2 3 -9 0 4 7 0 2 7 3 -2 9 -8 2 2 3 7 4 1 類似這樣 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.201.140 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1525444589.A.BE5.html ※ 編輯: Magicbears (27.242.201.140), 05/04/2018 22:39:17

05/05 00:56, 6年前 , 1F
if any(d(:,2)<2) d(:,10)=…; end
05/05 00:56, 1F

05/05 03:09, 6年前 , 2F
這我試過 但沒成功 我要的結果是 當d(2,2)<0那 原
05/05 03:09, 2F

05/05 03:09, 6年前 , 3F
本d(10,2)=-d(10,2)
05/05 03:09, 3F

05/05 03:33, 6年前 , 4F
喔,抱歉,打錯,是 all 不是 any
05/05 03:33, 4F

05/05 04:28, 6年前 , 5F
還是無法耶 是否是d(:,10)=-d(:10)的問題
05/05 04:28, 5F
※ 編輯: Magicbears (27.52.98.104), 05/05/2018 04:33:51

05/05 04:35, 6年前 , 6F
因為d(:10)是指原本整行?
05/05 04:35, 6F
※ 編輯: Magicbears (27.52.98.104), 05/05/2018 04:38:57

05/05 09:24, 6年前 , 7F
d(d(:,2)<0,10) = -d(d(:,2)<0,10);
05/05 09:24, 7F

05/09 02:41, 6年前 , 8F
最後我使用[a b]=find(d(:,2)<0); d(a 3)=-d(a -3);
05/09 02:41, 8F

05/09 02:42, 6年前 , 9F
上面的方法還是都只能改變整列值
05/09 02:42, 9F

05/09 03:38, 6年前 , 10F
我的方法應該是沒有問題的....?
05/09 03:38, 10F

05/12 16:32, 6年前 , 11F
sunev的方法應該可行 你的怎會有index是負的?
05/12 16:32, 11F

05/12 16:33, 6年前 , 12F
記得以前寫的時候Matlab內建都會提醒我有find都改成sune
05/12 16:33, 12F

05/12 16:33, 6年前 , 13F
v那樣比較快
05/12 16:33, 13F
文章代碼(AID): #1Qx6_jlb (MATLAB)
文章代碼(AID): #1Qx6_jlb (MATLAB)