Matlab查詢或刪除資料中滿足條件的元素?

Tags: 資料, 元素,

在處理資料的時候,需要查詢是否有滿足自己需要的資料,或者刪除不符合自己需要的資料,這個用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就可以執行 仔細看看過程都可以理解的

相關問題答案