簡體   English   中英

將非零整數從一個矩陣存儲到另一個矩陣

[英]Storing non-zero integers from one matrix into another

我試圖創建一個循環,該循環讀取矩陣(A)並將非零值存儲到新矩陣(w)中。 我不確定我的代碼有什么問題。

function [d,w] = matrix_check(A)
[nrow ncol] = size(A);
total = 0;
for i = 1:nrow
    for j = 1:ncol
        if A(i,j) ~= 0
            total = total + 1;
        end
    end
end
d = total;
w = [];
for i = 1:nrow
    for j = 1:ncol
        if A(i,j) ~= 0
            w = [A(i,j);w];
        end
    end
end

第二個循環不起作用(至少它沒有打印出w的結果)。

您可以使用nonzerosnnz

w = flipud(nonzeros(A)); %// flipud to achieve the same order as in your code
d = nnz(A);

第二個循環正在工作。 我猜你在做什么:

>> matrix_check(A)

並不是:

>> [d, w] = matrix_check(A)

除非另有說明,否則MATLAB將僅返回第一個輸出。

順便說一句,您可以利用MATLAB的邏輯索引完成任務,並利用(通常更快)的數組操作而不是循環。

d = sum(sum(A ~= 0));
w = A(A ~= 0);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM