您好我正在编写一个程序,其中用户输入矩阵的维度,收到具有指定维数的随机矩阵,并通过使用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.我该怎么做才能使函数正常工作。使用长度以外的东西的建议?
答案 0 :(得分:1)
为什么不使用max(mat,[],1)
(每列最多)和max(mat,[],2)
(每行最多)?
无论如何,在第二个函数的第三行中,y
应为z
。或者更好,只使用第一个功能。第二个做同样的事情。