Matlab查找或删除数据中满足条件的元素
在处理数据的时候,需要查找是否有满足自己需要的数据,或者删除不符合自己需要的数据,这个用Matlab进行处理的时候更为简单,Matlab可以处理更多形式的数据。
操作方法
- 01
查找一个10×100的随机矩阵中每行大于80的元素,并返回其个数 %程序如下: %%%%%程序开始%%%%%%% N = 10; a = randi([50 100], N, 100); %%%%%%%以下代码段为循环方式实现查找%%%%%%%%% num1 = ones(N, 1); for i = 1 : N num1(i) = nnz(a(i, :) > 80); end num1 %%%%%%%以下代码段为矩阵运算方式实现查找%%%%%%% num2 = sum(a > 80, 2) %%%%%%程序结束%%%%%%
- 02
查找二维数组矩阵中特定二维数组[1,1]所在的行号 %程序如下: %%%%%%程序开始%%%%%% %%%%%%%%生成已知量%%%%%%%%% A ={[0 0] [1 0] [0 0] [0 1] [0 0] [1 1] [0 0] [0 0] [1 1] [0 0] [1 1] [0 0] [1 1] [0 0] [1 1] [0 0] [0 0] [1 0] [1 0] [0 0] [0 0] [1 0] [0 0] [0 0] [0 0] [0 0] [1 1] [0 0] [1 1] [0 0] [1 1] [0 0] [0 0] [0 0] [0 0] [0 0] [0 0] [0 0] [1 0] [0 1] [1 1] [0 1] [0 0] [0 0] [1 1] [0 0] [0 0] [0 0]}; nLine = 1; mat = [1, 1]; a = cell2mat(A(:, nLine)); %%%%%%%%%直接数值比较%%%%%%%%%%%%%%% % b = repmat(mat, size(A, 1), 1); % index1 = find(~any(a - b, 2)) %%%%%%%%%转化为字符串比较%%%%%%%% mLines = size(A, 1); str_a = num2str(a); str_b = num2str(mat); cell_a = mat2cell(str_a, ones(1, mLines), length(str_b)); index2 = find(strcmp(cell_a, strb)) %采用strcmp函数 index3 = find(ismember(cell_a, strb)) %采用ismember函数 index4 = strmatch(strb, cell_a) %采用strmatch函数 %%%%%%程序结束%%%%%%
- 03
给一个矩阵中的特定数据进行替换 将矩阵中小于-2的值换为0,大于-2小于等于3的值换为1,大于三的值替换为2. %程序如下: %%%%%%程序开始%%%%%% A=[-5, -4, -3, -2; -1, 0, 1, 2; 3, 4, 5, 6]; %转换方法:a<=-2 ---->0; -2<a<=3--->1; a>3------->2。其中a为A中的元素。 sizeA = size(A); a1 = zeros(sizeA); a2 = a1; a3 = a1; a1(A <= -2) = 0; %采用逻辑数组作为索引值 a2(A > -2 & A <= 3) = 1; %采用逻辑数组作为索引值 a3(A > 3) = 2; %采用逻辑数组作为索引值 B = a1 + a2 + a3 %%%%%%程序结束%%%%%%