[讨论] 如何改变矩阵部份元素值

楼主: Magicbears (PA魔熊队)   2018-05-04 22:36:27
将一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
类似这样
作者: sppmg (sppmg)   2018-05-05 00:56:00
if any(d(:,2)<2) d(:,10)=…; end
楼主: Magicbears (PA魔熊队)   2018-05-05 03:09:00
这我试过 但没成功 我要的结果是 当d(2,2)<0那 原本d(10,2)=-d(10,2)
作者: sppmg (sppmg)   2018-05-05 03:33:00
喔,抱歉,打错,是 all 不是 any
楼主: Magicbears (PA魔熊队)   2018-05-05 04:28:00
还是无法耶 是否是d(:,10)=-d(:10)的问题因为d(:10)是指原本整行?
作者: sunev (Veritas)   2018-05-05 09:24:00
d(d(:,2)<0,10) = -d(d(:,2)<0,10);
楼主: Magicbears (PA魔熊队)   2018-05-09 02:41:00
最后我使用[a b]=find(d(:,2)<0); d(a 3)=-d(a -3);上面的方法还是都只能改变整列值
作者: sunev (Veritas)   2018-05-09 03:38:00
我的方法应该是没有问题的....?
作者: profyang (prof)   2018-05-12 16:32:00
sunev的方法应该可行 你的怎会有index是负的?记得以前写的时候Matlab内建都会提醒我有find都改成sunev那样比较快

Links booklink

Contact Us: admin [ a t ] ucptt.com