作者Lionel (跟快乐交往)
看板MATLAB
标题[讨论] 二维转一维
时间Sun Mar 22 16:21:46 2015
问题:
A=[0 1 3 4;
5 6 1 1;
7 0 1 8;
9 0 0 0;]
如果A矩阵(4*4)的一个元素/2後大於1
想要得到结果是B(1*N)矩阵 %N的大小由A决定
B=[3 4 5 6 7 8 9]
该如何写code
my code
A=[0 1 3 4;
5 6 1 1;
7 0 1 8;
9 0 0 0;]
for i=1:3
for j=1:4
if a(i,j)/2>1
end
end
end
if里面要放什麽我就想不出来了....
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.171.65.126
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1427012508.A.85E.html
※ 编辑: Lionel (118.171.65.126), 03/22/2015 16:24:18
1F:推 celestialgod: 设一个变数k=1,if成立assign B(k)为A(i, j),而且k 03/22 18:52
2F:→ celestialgod: 递增 03/22 18:52
3F:→ celestialgod: 我觉得A(A/2>1)应该出的来 03/22 18:53
4F:推 profyang: 就3F那样就好了 matlab就是尽量不要写回圈 03/22 19:43
5F:→ profyang: 不过可能你要先定义C=A'然後B=C(C/2>0)出来才是你要的B 03/22 19:44
6F:→ profyang: 1 03/22 19:45
7F:→ profyang: 你真的想写回圈的话 外面先定B=[];然後回圈里面就 03/22 19:46
8F:→ profyang: B=[B;a(i,j)] 03/22 19:46
A=[0 1 3 4;
5 6 1 1;
7 0 1 8;
9 0 0 0;];
B=[];
N=1;
for i=1:4
for j=1:4
if A(i,j)/2>1
B(1,N)=[A(i,j)];
N=N+1;
end
end
end
感谢大家 我大概知道了
※ 编辑: Lionel (118.171.65.126), 03/22/2015 21:48:59
9F:→ Lionel: 主要是我的if是在call别的矩阵 我只是把问题缩小来问 03/22 21:50
10F:→ Lionel: 其实我也很讨厌跑for 会很慢 03/22 21:55
11F:推 profyang: 假设你别的矩阵是D 你一样可以写A(D/2>1) 只要A和D这两 03/22 22:04
12F:→ profyang: 矩阵size一样 03/22 22:05
13F:→ ja20331: A=A'; B=A(find(A/2>1))'; 03/23 00:13