Matlab 如何选出数组里面符合条件的行
供稿:hz-xin.com 日期:2025-01-14
Matlab从数组查找并选出符合条件的值
clc;
worm=[1 18 1
1.25 20 1
1.25 22.4 1
1.6 20 1
1.6 20 2
1.6 20 4
1.6 28 1
2 22.4 1
2 22.4 2];
a = find(worm(:,3)==2); %%%%%% 把第三列值是2的所有行都挑出来
b = worm(a,1:2) %%%%%% 把前两列赋给数组b
结果:
b =
1.6000 20.0000
2.0000 22.4000
>>
可这样:
clc
clear
A=[1 2 3 4 5 23 35 34 23 8 7 0 7 21 4 32 53 1 2 4 14];
k=find(A>30);
a=A(k);
s=diff(k);
if any(s>1)
n=length(find(s>1));
fprintf('有%d个不连续组:
',n+1)
kk=find(s>1);
if n==1
a1=a(1:kk)
a2=a(kk+1:end)
end
else
disp('全连续')
end
使用a(M,N)可以提取矩阵a中符合M,N要求的部分
最简单是M,N都是标量,就是一个数例如
a(1,1) a(2,3)分别返回a矩阵1行1列的单元 和 2行3列的单元
M,N还可以是矢量,例如
a([1 2 3 4],[2 3]) 返回 1 2 3 4行 2 3 列的数据
这里还有通配的技巧,例如
a(1,:)就是返回a矩阵第一行的所有数据等效于a(1,1:end)或a(1,1:size(a,2))
M,N矢量还可以是不连续的,不是单调的,或者有重复的,例如
a(1:2:end,:) a(2:2:end,:)分别提取矩阵a的奇数行和偶数行数据重新组成矩阵
a(end:-1:1,:) a(:,end:-1:1)分别返回a矩阵行倒序和列倒序的矩阵
总之matlab通过的下标提取矩阵部分是很灵活的
假设你要提取矩阵a第n列的数据,使用a(:,n)就可以了
如果是要提取第n列前10个数据使用a(1:10,n)就可以了
clc;
worm=[1 18 1
1.25 20 1
1.25 22.4 1
1.6 20 1
1.6 20 2
1.6 20 4
1.6 28 1
2 22.4 1
2 22.4 2];
a = find(worm(:,3)==2); %%%%%% 把第三列值是2的所有行都挑出来
b = worm(a,1:2) %%%%%% 把前两列赋给数组b
结果:
b =
1.6000 20.0000
2.0000 22.4000
>>