作者BKD858 (Pz)
看板MATLAB
标题[问题]矩阵判断
时间Thu Jul 9 16:08:42 2015
您好
我有一个矩阵
简化为
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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1436429324.A.893.html
※ 编辑: BKD858 (218.35.209.175), 07/09/2015 17:17:20
1F:→ s4300026: find? 07/09 17:44
2F:→ BKD858: find完加上360後要怎麽回归成原本的排序方式 07/09 17:46
3F:推 celestialgod: 假设m是你的矩阵 07/09 17:53
4F:→ celestialgod: m(1, m(:, 2)<0)=m(1, m(:, 2)<0)+360 07/09 17:54
5F:→ celestialgod: 更正m(:, m(:, 2)<0)=m(:, m(:, 2)<0)+360 07/09 17:55
6F:→ BKD858: 谢谢!但现在出现Index exceeds matrix dimensions维数错误 07/09 18:05
7F:推 s4300026: find是找矩阵index,不影响排序阿... 07/09 18:22
8F:→ BKD858: 请问可以在解释详细一点 目前卡在加完360後如何排回去原本 07/09 18:32
9F:→ BKD858: 矩阵中 07/09 18:32
10F:→ BKD858: QQ 试出来了 a(find(a>0))=a(a<0)+360.... 07/09 18:50
11F:推 sunev: 如果是角度问题,用mod可能直接一点m(:,2)=mod(m(:,2),360) 07/09 23:35
12F:推 anticrime: 可以试试看这样,假设矩阵为A 07/10 10:40
13F:→ anticrime: A(:,2) = A(:,2)+(A(:,2)<0)*360; 07/10 10:41
14F:→ anticrime: 这样<0的部分就会+360了 07/10 10:41
15F:→ celestialgod: 我的可以啊,你的维度是不是2 X N不是 n X 2 07/10 12:01
16F:→ celestialgod: 你的find那个要注意 如果第一行有负的也会变成正 07/10 12:02
17F:→ celestialgod: 没办法应对只想改部分矩阵的情况 07/10 12:03
18F:→ BKD858: 嗯我知道!我第一排原始资料是时间序列!所以OK 是N*2 07/10 16:08
19F:→ BKD858: 感谢各位先进!小弟受益匪浅~ 07/10 16:11
20F:→ name0625: 如果矩阵为A B=(A<0)*360; A=A+B; 如果第一行会出现<0 07/14 20:22
21F:→ name0625: 眼残没看到有人回... 07/14 20:23