-3

您好我正在编写一个程序,其中用户输入矩阵的维度,接收具有指定维度的随机矩阵,并通过使用 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。我该怎么做才能使函数正常工作。使用长度以外的东西的建议?

4

1 回答 1

1

为什么不只使用max(mat,[],1)(给出每列的最大值)和max(mat,[],2)(给出每行的最大值)?

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

于 2013-10-28T15:05:46.597 回答