在處理資料的時候,需要查詢是否有滿足自己需要的資料,或者刪除不符合自己需要的資料,這個用Matlab進行處理的時候更為簡單,Matlab可以處理更多形式的資料。
在處理資料的時候,需要查詢是否有滿足自己需要的資料,或者刪除不符合自己需要的資料,這個用Matlab進行處理的時候更為簡單,Matlab可以處理更多形式的資料。
工具/原料
Matlab任何版本
方法/步驟
查詢一個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)
%%%%%%程式結束%%%%%%
查詢二維陣列矩陣中特定二維陣列[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函式
%%%%%%程式結束%%%%%%
給一個矩陣中的特定資料進行替換
將矩陣中小於-2的值換為0,大於-2小於等於3的值換為1,大於三的值替換為2.
%程式如下:
%%%%%%程式開始%%%%%%
A=[-5, -4, -3, -2; -1, 0, 1, 2; 3, 4, 5, 6];
%轉換方法:a<=-2 ---->0; -2 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
%%%%%%程式結束%%%%%%
注意事項
上面程式複製到Matlab就可以執行 仔細看看過程都可以理解的