作者Magicbears (PA魔熊队)
看板MATLAB
标题[讨论] 如何改变矩阵部份元素值
时间Fri May 4 22:36:27 2018
将一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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1525444589.A.BE5.html
※ 编辑: Magicbears (27.242.201.140), 05/04/2018 22:39:17
1F:推 sppmg: if any(d(:,2)<2) d(:,10)=…; end05/05 00:56
2F:→ Magicbears: 这我试过 但没成功 我要的结果是 当d(2,2)<0那 原05/05 03:09
3F:→ Magicbears: 本d(10,2)=-d(10,2)05/05 03:09
4F:→ sppmg: 喔,抱歉,打错,是 all 不是 any05/05 03:33
5F:→ Magicbears: 还是无法耶 是否是d(:,10)=-d(:10)的问题05/05 04:28
※ 编辑: Magicbears (27.52.98.104), 05/05/2018 04:33:51
6F:→ Magicbears: 因为d(:10)是指原本整行?05/05 04:35
※ 编辑: Magicbears (27.52.98.104), 05/05/2018 04:38:57
7F:推 sunev: d(d(:,2)<0,10) = -d(d(:,2)<0,10); 05/05 09:24
8F:→ Magicbears: 最後我使用[a b]=find(d(:,2)<0); d(a 3)=-d(a -3); 05/09 02:41
9F:→ Magicbears: 上面的方法还是都只能改变整列值 05/09 02:42
10F:推 sunev: 我的方法应该是没有问题的....? 05/09 03:38
11F:推 profyang: sunev的方法应该可行 你的怎会有index是负的? 05/12 16:32
12F:→ profyang: 记得以前写的时候Matlab内建都会提醒我有find都改成sune 05/12 16:33
13F:→ profyang: v那样比较快 05/12 16:33