2013-10-28 42 views
-3

您好我正在編寫一個程序,其中用戶輸入矩陣的維度,接收具有指定維數的隨機矩陣,並通過使用for循環返回每行和每列的最大值。創建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

請搜索關於「matlab如何查找最大值」的問題!! ... –

+0

你知道你可以用'max'來做嗎? –

+1

而且你的功能都一樣嗎? –

回答

1

爲什麼不僅僅使用max(mat,[],1)(給出每列的最大值)和max(mat,[],2)(給出每行的最大值)?

無論如何,在第二個函數的第三行中,y應該是z。或者更好的是,只使用第一個功能。第二個完全一樣的東西。

+0

我想在不使用最大函數的情況下執行此操作。我放入第二個函數的原因是測試一種方法來查找列的最大值。我只能得到最多的行。 – user2928537

+0

我已經嘗試了下面的代碼使用相同的功能:全部清除 rows = input('輸入行數:'); columns = input('輸入列數:'); (rand(rows,columns)*(30-1)+1) [r,c] = size(mat);對於x = 1: q = mat(x,:); outmax = mymaxq(q); fprintf('行%d的最大值是%d。\ n',x,outmax) for y = 1:c q = mat(:,y); outmax = mymax(q); fprintf('列的最大值%d。',y,outmax) 結束 結束 – user2928537