我的程式創建了一個矩陣,其多行的單元格值在對應的列中是相同的。我想洗掉一些 0 多于 1 的行。為了澄清,我的矩陣具有以下形式,
A=[ 1 1 1 0 0 1 1 1; 1 0 0 1 1 1 1 1 1; 1 1 1 1 1 1 1 0; 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 ]
我想洗掉第一、第二和第五行中的所有列,因為數字 0 在第三和第四行的行矩陣中剩下 2 個或更多,因為它們在每一行中有 0 個。結果應該是以下矩陣:
A=[ 1 1 1 1 1 1 1 1 0; 1 1 1 1 0 1 1 1 ]
uj5u.com熱心網友回復:
我為你的演算法撰寫了這段代碼,而不是正常作業:
% Input Matrix
A = [1 1 1 0 0 1 1 1;1 0 0 1 1 1 1 1; 1 1 1 1 1 1 1 0;1 1 1 1 0 1 1 1;1 1 0 1 0 0 1 1 ];
% find number of rows and cols
[num_rows, num_cols] = size(A);
% Itrate on each row and find rows that have less than 2 zeros
selected_rows = [];
idx = 1;
for i=1:num_rows
num_zero = sum(A(i, 1:end) == 0);
if num_zero < 2
selected_rows(idx) = i;
idx = idx 1;
end
end
% return result matrix
result = [];
for i=1:length(selected_rows)
result = [result; A(selected_rows(i), 1:end)];
end
disp(result)
uj5u.com熱心網友回復:
- 創建一個(列)向量,其中包含每行中零的數量。
- 如果零的數量大于 1,則將向量轉換為包含 0(假)的邏輯陣列。
- 使用邏輯索引創建一個新矩陣,該矩陣僅包含具有 0 或 1 個零值的行。
或者:
- 如果零的數量大于 1,則將向量轉換為包含 1(真)的邏輯陣列。
- 使用邏輯索引從原始矩陣中洗掉包含 1 個以上零值的行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/395902.html
下一篇:提升卡方反演
