Matlab 函数接受一个矩阵作为输入,并使用for循环逐个元素地将一个矩阵添加到每个元素中

Matlab 函数接受一个矩阵作为输入,并使用for循环逐个元素地将一个矩阵添加到每个元素中,matlab,Matlab,我创建了一个函数,将一个函数添加到元素中,如下所示: function xz = addOne(x) nrow = size(x,1); ncol = size(x,1); for K = 1:nrow for J = 1:ncol xz = x(:) + 1; end end 示例:给定1,函数结果为2: addOne(1) [2] 我试着用一个矩阵作为函数的参数 x = [1 2 3; 0 0 0; 4 5 6]; x = 1 2

我创建了一个函数,将一个函数添加到元素中,如下所示:

function xz = addOne(x)
nrow = size(x,1);
ncol = size(x,1);

for K = 1:nrow
    for J = 1:ncol
        xz = x(:) + 1; 
    end
end
示例:给定1,函数结果为2:

addOne(1) [2]
我试着用一个矩阵作为函数的参数

x = [1 2 3; 0 0 0; 4 5 6];

x =

 1     2     3
 0     0     0
 4     5     6

addOneWithFors(x)

ans =

     2
     1
     5
     3
     1
     6
     4
     1
     7

如何更新此函数以接受包含多行和多列的矩阵,并将其输出,而不是仅输出一个数字或元素列表。任何帮助都将不胜感激。

在Matlab中,您不需要特殊的函数来完成此操作。Matlab本机支持向矩阵添加标量。例如:

x = [1 2 3; 0 0 0; 4 5 6];
y = x + 1
function xz = addOne(x)
nrow = size(x,1);
ncol = size(x,2);

xz = zeros(nrow,ncol);
for K = 1:nrow
    for J = 1:ncol
        xz(K,J) = x(K,J) + 1; 
    end
end
将产生:

y =

     2     3     4
     1     1     1
     5     6     7
但是,如果您特别希望使用for循环显式地写出这一点,那么您的addOne函数只需要稍作修改。例如:

x = [1 2 3; 0 0 0; 4 5 6];
y = x + 1
function xz = addOne(x)
nrow = size(x,1);
ncol = size(x,2);

xz = zeros(nrow,ncol);
for K = 1:nrow
    for J = 1:ncol
        xz(K,J) = x(K,J) + 1; 
    end
end

注意,ncol=sizex,2;已正确定义。

要逐个处理矩阵元素,必须使用索引K和J为输入矩阵编制索引。矩阵索引如下所示: