Matlab 将非零整数从一个矩阵存储到另一个矩阵

Matlab 将非零整数从一个矩阵存储到另一个矩阵,matlab,function,loops,for-loop,Matlab,Function,Loops,For Loop,我试图创建一个循环,读取一个矩阵(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 = [];

我试图创建一个循环,读取一个矩阵(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的结果)。

第二个循环工作。我猜你在做:

>> matrix_check(A)
而不是:

>> [d, w] = matrix_check(A)
除非另有规定,否则MATLAB将仅返回第一个输出

另一方面,您可以利用MATLAB完成任务,并利用(通常更快)数组操作而不是循环

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

第二个循环正在运行。我猜你在做:

>> matrix_check(A)
而不是:

>> [d, w] = matrix_check(A)
除非另有规定,否则MATLAB将仅返回第一个输出

另一方面,您可以利用MATLAB完成任务,并利用(通常更快)数组操作而不是循环

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

第二个循环正在运行。我猜你在做:

>> matrix_check(A)
而不是:

>> [d, w] = matrix_check(A)
除非另有规定,否则MATLAB将仅返回第一个输出

另一方面,您可以利用MATLAB完成任务,并利用(通常更快)数组操作而不是循环

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

第二个循环正在运行。我猜你在做:

>> matrix_check(A)
而不是:

>> [d, w] = matrix_check(A)
除非另有规定,否则MATLAB将仅返回第一个输出

另一方面,您可以利用MATLAB完成任务,并利用(通常更快)数组操作而不是循环

d = sum(sum(A ~= 0));
w = A(A ~= 0);
您可以使用和:

您可以使用和:

您可以使用和:

您可以使用和:



用于逐步检查代码并查看其流程。此函数对我来说运行良好,您是否使用两个声明的输出调用
matrix\u check
?e、 是的,我只是想看看为什么我的输出只有一个值。当你说“至少它没有打印出w的结果”时,你的意思是w是空的还是你只想在填充w时看到w的值?在这种情况下,请删除分号…哦,好吧,我认为即使在输出中指定了w,它也会打印w,即使我包含了分号。用于逐步检查代码并查看其流动情况。此函数对我来说运行良好,您是否使用两个声明的输出调用
矩阵检查
?e、 是的,我只是想看看为什么我的输出只有一个值。当你说“至少它没有打印出w的结果”时,你的意思是w是空的还是你只想在填充w时看到w的值?在这种情况下,请删除分号…哦,好吧,我认为即使在输出中指定了w,它也会打印w,即使我包含了分号。用于逐步检查代码并查看其流动情况。此函数对我来说运行良好,您是否使用两个声明的输出调用
矩阵检查
?e、 是的,我只是想看看为什么我的输出只有一个值。当你说“至少它没有打印出w的结果”时,你的意思是w是空的还是你只想在填充w时看到w的值?在这种情况下,请删除分号…哦,好吧,我认为即使在输出中指定了w,它也会打印w,即使我包含了分号。用于逐步检查代码并查看其流动情况。此函数对我来说运行良好,您是否使用两个声明的输出调用
矩阵检查
?e、 是的,我只是想看看为什么我的输出只有一个值。当你说“至少它没有打印出w的结果”时,你的意思是w是空的还是你只想在填充w时看到w的值?在这种情况下,删除分号…哦,好吧,我认为即使在输出中指定了w,它也会打印w,即使我包含了分号。Doh!当然,这是有内置的。稍微调整一下,你已经翻转了
d
w
。@excaza谢谢!纠正了哦!当然,这是有内置的。稍微调整一下,你已经翻转了
d
w
。@excaza谢谢!纠正了哦!当然,这是有内置的。稍微调整一下,你已经翻转了
d
w
。@excaza谢谢!纠正了哦!当然,这是有内置的。稍微调整一下,你已经翻转了
d
w
。@excaza谢谢!纠正