如何理解matlab函數(shù),相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元營(yíng)山做網(wǎng)站,已為上家服務(wù),為營(yíng)山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
PadSize函數(shù)
貼下 matlab源代碼
function [pad_ul, pad_lr] = PadSize(offsets,op_type) if isempty(offsets) pad_ul = zeros(1,2); pad_lr = zeros(1,2); else num_dims = size(offsets{1},2); //求出最大維數(shù) for k = 2:length(offsets) num_dims = max(num_dims, size(offsets{k},2)); end for k = 1:length(offsets) //建立大矩陣 offsets{k} = [offsets{k} zeros(size(offsets{k},1),... num_dims - size(offsets{k},2))]; end pad_ul = zeros(1,num_dims); pad_lr = zeros(1,num_dims); for k = 1:length(offsets) //找出矩陣中的最小值 offsets_k = offsets{k}; if ~isempty(offsets_k) pad_ul = pad_ul + max(0, -min(offsets_k,[],1)); pad_lr = pad_lr + max(0, max(offsets_k,[],1)); end end if strcmp(op_type,'erode') % Swap tmp = pad_ul; pad_ul = pad_lr; pad_lr = tmp; end end
輸入:offsets是 1*6 cell
<7x2 double> <5*2 double> <7x2 double> <5*2 double> <5*2 double> <5*2 double>
max(offsets_k,[],1) offsets_k是5*2的矩陣-
2 -2
-1 -1
0 0
1 1
2 2
貼個(gè)詳細(xì)的解釋:http://blog.sina.com.cn/s/blog_505018ce0101976j.html
細(xì)說(shuō)MATLAB中的MAX函數(shù)
一:MAX函數(shù)的幾種形式
(1)max(a) (2)max(a,b) (3)max(a,[],dim) (4)[C,I]=max(a) (5)[C,I]=max(a,[],dim)
二:舉例說(shuō)明函數(shù)意思
(1)max(a)
如果a是一個(gè)矩陣,比如a=[1,2,3;4,5,6],max(a)的意思就是找出矩陣每列的最大值, 本例中:max(a)=[4,5,6]
(2)max(a,b)
如果a和b都是大于1維的矩陣,那么要求a和b的行列的維數(shù)都要相等,函數(shù)的結(jié)果是比較a和b中每個(gè)元素的大小,比如:
a=[1,2,3;4,5,6] b=[4,5,6;7,8,3] max(a,b)=[4,5,6;7,8,6] 另外,如果a和b中至少有一個(gè)是常數(shù),也是可以的。比如: a=[1,2,3;4,5,6] b=3 c=5
max(a,b)=[3,3,3;4,5,6] 相信大家看了例子都明白了函數(shù)的意思了吧 max(b,c)=5
(3)max(a,[],dim)
這個(gè)函數(shù)的意思是針對(duì)于2維矩陣的,dim是英文字母dimension的縮寫,意思是維數(shù)。 當(dāng)dim=1時(shí),比較的a矩陣的行,也就是和max(a)的效果是一樣的;當(dāng)dim2時(shí),比較的是a矩陣的行。下面舉個(gè)例子:
a=[1,2,3;4,5,6] max(a)=max(a,[],1)=[4,5,6] 比較的第一行和第二行的值 max(a,[],2)=[3,6]
(4)[C,I]=max(a)
C表示的是矩陣a每列的最大值,I表示的是每個(gè)最大值對(duì)應(yīng)的下標(biāo): 下面舉例說(shuō)明:
還是剛才那個(gè)例子:a=[1,2,3;4,5,6] [C,I]=max(a)
結(jié)果顯示的是C=[4,5,6] I=[2,2,2] 返回的是最大值對(duì)應(yīng)的行號(hào)。
(5)[C,I]=max(a,[],dim)
同理:如果dim=1時(shí),其結(jié)果和[c,i]=max(a)是一樣的。 當(dāng)dim=2時(shí),同樣上面的矩陣a,我們運(yùn)行一下:
[c,i]=max(a,[],2) 結(jié)果是:c=[3,6] i=[3,3] i返回的是矩陣a的列號(hào)。
ndims()函數(shù)
ndims(A)返回結(jié)果實(shí)際上等于length(size(A))。
通俗一點(diǎn)講,數(shù)組維度就是數(shù)組具有的方向。比如普通的二維數(shù)組,數(shù)組具有行方向和列方向,就是說(shuō)數(shù)組具有兩個(gè)方向,是一個(gè)二維數(shù)組。MATLAB中還可以創(chuàng)建三維甚至更高維的數(shù)組。
對(duì)于空數(shù)組、標(biāo)量和一維數(shù)組,MATLAB還是當(dāng)作普通二維數(shù)組對(duì)待的,因此它們都至少具有兩個(gè)維度(至少具有行和列的方向)。特別地,用空白方括號(hào)產(chǎn)生的空數(shù)組是當(dāng)作二維數(shù)組對(duì)待的,但在高維數(shù)組中也有空數(shù)組的概念,這時(shí)候的空數(shù)組可以是只在任意一個(gè)維度上尺寸等于零的數(shù)組,相應(yīng)地,此時(shí)的空數(shù)組就具有多個(gè)維度了。
MATLAB中計(jì)算數(shù)組維度可以用函數(shù)ndims。
ndims(A)返回結(jié)果實(shí)際上等于length(size(A))。
【例3-13】數(shù)組維度。
解:輸入命令后其運(yùn)行結(jié)果如下:
>> B=2
B =
2
>> ndims(B)
ans =
2
>> c=1:5
c =
1 2 3 4 5
>> ndims(c)
ans =
2
通過(guò)例3-13可以看到,一般的非多維數(shù)組,在MATLAB中都是當(dāng)作二維數(shù)組處理的。
在貼一個(gè)函數(shù):鏈接http://blog.sina.com.cn/s/blog_83057b2401012rxj.html
function :填充圖像或填充數(shù)組
use:
B = padarray(A,padsize,padval,direction)
A為輸入圖像,B為填充后的圖像,padsize給出了給出了填充的行數(shù)和列數(shù),通常用[r c]來(lái)表示。padval和direction分別表示填充方法和方向。它們的具體值和描述如下:
padval:'symmetric'表示圖像大小通過(guò)圍繞邊界進(jìn)行鏡像反射來(lái)擴(kuò)展;
'replicate'表示圖像大小通過(guò)復(fù)制外邊界中的值來(lái)擴(kuò)展;
'circular'圖像大小通過(guò)將圖像看成是一個(gè)二維周期函數(shù)的一個(gè)周期來(lái)進(jìn)行擴(kuò)展。
direction:'pre'表示在每一維的第一個(gè)元素前填充;
'post'表示在每一維的最后一個(gè)元素后填充;
'both'表示在每一維的第一個(gè)元素前和最后一個(gè)元素后填充,此項(xiàng)為默認(rèn)值。
若參量中不包括direction,則默認(rèn)值為'both'。若參量中不包含padval,則默認(rèn)用零來(lái)填充。若參量中不包括任何參數(shù),則默認(rèn)填充為零且方向?yàn)?#39;both'。在計(jì)算結(jié)束時(shí),圖像會(huì)被修剪成原始大小。
[a, method, padSize, padVal, direction] = ParseInputs(varargin{:}); if isempty(a),% treat empty matrix similar for any method if strcmp(direction,'both') sizeB = size(a) + 2*padSize; else sizeB = size(a) + padSize; end b = mkconstarray(class(a), padVal, sizeB); else switch method case 'constant' b = ConstantPad(a, padSize, padVal, direction);//作用是: case 'circular' b = CircularPad(a, padSize, direction); case 'symmetric' b = SymmetricPad(a, padSize, direction); case 'replicate' b = ReplicatePad(a, padSize, direction); end end if (islogical(a)) b = logical(b); end
function b = ConstantPad(a, padSize, padVal, direction)
numDims = numel(padSize);
% Form index vectors to subsasgn input array into output array.
% Also compute the size of the output array.
idx = cell(1,numDims);
sizeB = zeros(1,numDims);
for k = 1:numDims
M = size(a,k);
switch direction
case 'pre'
idx{k} = (1:M) + padSize(k);
sizeB(k) = M + padSize(k);
case 'post'
idx{k} = 1:M;
sizeB(k) = M + padSize(k);
case 'both'
idx{k} = (1:M) + padSize(k);
sizeB(k) = M + 2*padSize(k);
end
end
% Initialize output array with the padding value. Make sure the
% output array is the same type as the input.
b = mkconstarray(class(a), padVal, sizeB);
b(idx{:}) = a;
看完上述內(nèi)容,你們掌握如何理解matlab函數(shù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
文章題目:如何理解matlab函數(shù)
網(wǎng)站URL:http://bm7419.com/article0/igdcoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、虛擬主機(jī)、云服務(wù)器、網(wǎng)站策劃、域名注冊(cè)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)