创建for循环以查找列向量中的最大值

时间:2013-10-28 15:00:20

标签: matlab loops vector matrix

您好我正在编写一个程序,其中用户输入矩阵的维度,收到具有指定维数的随机矩阵,并通过使用for循环返回每行和每列的最大值。

以下是我用于查找每行最大值的函数的代码

function outmax = mymaxq (q)
outmax = q (1);
for i = 2:length (q)
    if q(i) > outmax
        outmax = q(i);
    end
end
end

查找每列最大值的函数代码:

function outmax2 = mymaxcol(z)
outmax2 = z(1);
for i = 2: length (y)
    if z(i) > outmax2
        outmax2 = z(i);
    end
end
end

整个脚本的代码:

rows = input('Enter the number of rows: ');
columns = input ('Enter the number of columns: ');
mat = round(rand(rows , columns)*(30-1)+1)
[r,c] =size (mat);
for x = 1:r
    q = mat(x,:);
    outmax = mymaxq(q);
    fprintf ('The max of row %d is %d.\n',x,outmax)
end
for y = 1:c
    z = mat(:,y);
    outmax2 = mymaxcol(z);
    fprintf ('The max of column %d is %d.\n',y,outmax2)
end

但是列功能无法正常工作。我的猜测是因为列向量的长度为1.我该怎么做才能使函数正常工作。使用长度以外的东西的建议?

1 个答案:

答案 0 :(得分:1)

为什么不使用max(mat,[],1)(每列最多)和max(mat,[],2)(每行最多)?

无论如何,在第二个函数的第三行中,y应为z。或者更好,只使用第一个功能。第二个做同样的事情。