千家信息网

如何理解matlab函数

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,如何理解matlab函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PadSize函数贴下 matlab源代码function [pa
千家信息网最后更新 2026年11月02日如何理解matlab函数

如何理解matlab函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

PadSize函数

贴下 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); //求出最大维数    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;    endend

输入: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函数
一:MAX函数的几种形式
(1)max(a) (2)max(a,b) (3)max(a,[],dim) (4)[C,I]=max(a) (5)[C,I]=max(a,[],dim)
二:举例说明函数意思
(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的行列的维数都要相等,函数的结果是比较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中至少有一个是常数,也是可以的。比如: a=[1,2,3;4,5,6] b=3 c=5
max(a,b)=[3,3,3;4,5,6] 相信大家看了例子都明白了函数的意思了吧 max(b,c)=5
(3)max(a,[],dim)
这个函数的意思是针对于2维矩阵的,dim是英文字母dimension的缩写,意思是维数。 当dim=1时,比较的a矩阵的行,也就是和max(a)的效果是一样的;当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表示的是每个最大值对应的下标: 下面举例说明:
还是刚才那个例子:a=[1,2,3;4,5,6] [C,I]=max(a)
结果显示的是C=[4,5,6] I=[2,2,2] 返回的是最大值对应的行号。
(5)[C,I]=max(a,[],dim)
同理:如果dim=1时,其结果和[c,i]=max(a)是一样的。 当dim=2时,同样上面的矩阵a,我们运行一下:
[c,i]=max(a,[],2) 结果是:c=[3,6] i=[3,3] i返回的是矩阵a的列号。

ndims()函数

ndims(A)返回结果实际上等于length(size(A))。

通俗一点讲,数组维度就是数组具有的方向。比如普通的二维数组,数组具有行方向和列方向,就是说数组具有两个方向,是一个二维数组。MATLAB中还可以创建三维甚至更高维的数组。

对于空数组、标量和一维数组,MATLAB还是当作普通二维数组对待的,因此它们都至少具有两个维度(至少具有行和列的方向)。特别地,用空白方括号产生的空数组是当作二维数组对待的,但在高维数组中也有空数组的概念,这时候的空数组可以是只在任意一个维度上尺寸等于零的数组,相应地,此时的空数组就具有多个维度了。

MATLAB中计算数组维度可以用函数ndims。

ndims(A)返回结果实际上等于length(size(A))。

【例3-13】数组维度。

解:输入命令后其运行结果如下:
>> B=2
B =
2
>> ndims(B)
ans =
2
>> c=1:5
c =
1 2 3 4 5
>> ndims(c)
ans =
2

通过例3-13可以看到,一般的非多维数组,在MATLAB中都是当作二维数组处理的。

在贴一个函数:链接http://blog.sina.com.cn/s/blog_83057b2401012rxj.html

function :填充图像或填充数组

use:

B = padarray(A,padsize,padval,direction)
A为输入图像,B为填充后的图像,padsize给出了给出了填充的行数和列数,通常用[r c]来表示。padval和direction分别表示填充方法和方向。它们的具体值和描述如下:
  padval:'symmetric'表示图像大小通过围绕边界进行镜像反射来扩展;

'replicate'表示图像大小通过复制外边界中的值来扩展;

'circular'图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。
direction:'pre'表示在每一维的第一个元素前填充;
'post'表示在每一维的最后一个元素后填充;
'both'表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。
若参量中不包括direction,则默认值为'both'。若参量中不包含padval,则默认用零来填充。若参量中不包括任何参数,则默认填充为零且方向为'both'。在计算结束时,图像会被修剪成原始大小。

[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      endif (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;

看完上述内容,你们掌握如何理解matlab函数的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

数组 函数 矩阵 图像 方向 结果 二维 最大 元素 大小 意思 维度 最大值 一维 例子 参量 就是 方法 输入 普通 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 互联网科技工作委员会主任 互联网电商科技 科技信息互联网 贷财互联网科技 银优互联网科技有限公司 广州互联网络科技有限公司 互联网科技公司做什么 恒生科技互联网指数分析 贵州叶脉互联网科技有限公司所属行业 互联网对科技的发展 宜昌元轩互联网科技有限公司 互联网时代的科技公司 北京市互联网新科技 梅州GM互联网络科技有限公司 宇信科技在杭州互联网排第几 科技互联网行业投资研究 恒生科技指数 中概互联网 互联网领先科技成果宣传视频 科技互联网专业务虚会材料 互联网科技工作委员会 重生之互联网科技帝国 互联网是不是新科技 互联网科技小贷 互联网科技英文翻译 阿里巴巴算科技企业还是互联网 哈尔滨屹滨互联网科技有限公司 允成互联网科技有限公司融资 徐州市互联网科技有限公司 互联网科技手机排行榜
0