如何理解matlab函數(shù)-創(chuàng)新互聯(lián)

如何理解matlab函數(shù),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

10余年的治多網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整治多建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“治多網(wǎng)站設(shè)計”,“治多網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

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

貼個詳細的解釋:http://blog.sina.com.cn/s/blog_505018ce0101976j.html

細說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) 
二:舉例說明函數(shù)意思 
(1)max(a) 
如果a是一個矩陣,比如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中每個元素的大小,比如: 
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中至少有一個是常數(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) 
這個函數(shù)的意思是針對于2維矩陣的,dim是英文字母dimension的縮寫,意思是維數(shù)。 當(dāng)dim=1時,比較的a矩陣的行,也就是和max(a)的效果是一樣的;當(dāng)dim2時,比較的是a矩陣的行。下面舉個例子: 
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表示的是每個較大值對應(yīng)的下標(biāo): 下面舉例說明: 
還是剛才那個例子:a=[1,2,3;4,5,6]          [C,I]=max(a) 
結(jié)果顯示的是C=[4,5,6]       I=[2,2,2]   返回的是較大值對應(yīng)的行號。 
(5)[C,I]=max(a,[],dim) 
同理:如果dim=1時,其結(jié)果和[c,i]=max(a)是一樣的。 當(dāng)dim=2時,同樣上面的矩陣a,我們運行一下: 
[c,i]=max(a,[],2)     結(jié)果是:c=[3,6]   i=[3,3]    i返回的是矩陣a的列號。


ndims()函數(shù)

ndims(A)返回結(jié)果實際上等于length(size(A))。

通俗一點講,數(shù)組維度就是數(shù)組具有的方向。比如普通的二維數(shù)組,數(shù)組具有行方向和列方向,就是說數(shù)組具有兩個方向,是一個二維數(shù)組。MATLAB中還可以創(chuàng)建三維甚至更高維的數(shù)組。

對于空數(shù)組、標(biāo)量和一維數(shù)組,MATLAB還是當(dāng)作普通二維數(shù)組對待的,因此它們都至少具有兩個維度(至少具有行和列的方向)。特別地,用空白方括號產(chǎn)生的空數(shù)組是當(dāng)作二維數(shù)組對待的,但在高維數(shù)組中也有空數(shù)組的概念,這時候的空數(shù)組可以是只在任意一個維度上尺寸等于零的數(shù)組,相應(yīng)地,此時的空數(shù)組就具有多個維度了。

MATLAB中計算數(shù)組維度可以用函數(shù)ndims。

ndims(A)返回結(jié)果實際上等于length(size(A))。

【例3-13】數(shù)組維度。

解:輸入命令后其運行結(jié)果如下:
         >> B=2
         B =
              2
         >> ndims(B)
         ans =
              2
         >> c=1:5
         c =
              1     2     3     4     5
         >> ndims(c)
         ans =
              2

通過例3-13可以看到,一般的非多維數(shù)組,在MATLAB中都是當(dāng)作二維數(shù)組處理的。

在貼一個函數(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]來表示。padval和direction分別表示填充方法和方向。它們的具體值和描述如下:
padval:'symmetric'表示圖像大小通過圍繞邊界進行鏡像反射來擴展;
       
'replicate'表示圖像大小通過復(fù)制外邊界中的值來擴展;
       
'circular'圖像大小通過將圖像看成是一個二維周期函數(shù)的一個周期來進行擴展。
  direction:'pre'表示在每一維的第一個元素前填充;
        'post'表示在每一維的最后一個元素后填充;
        'both'表示在每一維的第一個元素前和最后一個元素后填充,此項為默認值。
  若參量中不包括direction,則默認值為'both'。若參量中不包含padval,則默認用零來填充。若參量中不包括任何參數(shù),則默認填充為零且方向為'both'。在計算結(jié)束時,圖像會被修剪成原始大小。

[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è)資訊頻道,感謝各位的閱讀!

網(wǎng)站名稱:如何理解matlab函數(shù)-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://muchs.cn/article36/dsijpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)網(wǎng)站設(shè)計、關(guān)鍵詞優(yōu)化響應(yīng)式網(wǎng)站、建站公司電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化