matlab函数sum和size用法

[复制链接]
小小2008鸟 发表于 2012-9-20 15:24:24


sum
函数解释
函数功能
求数组元素的总和
使用方法B = sum(A)
返回数组A不同维数的总和。
如果A是一个向量,sum(A) 返回所有元素的总和。
如果A是一个矩阵,sum(A) A的列作为向量,返回一个包含每一列所有元素的总和的行向量。
如果A是一个多维数组,sum(A) 把没一维看做一个数组,返回一个行向量数组。

B = sum(A,dim)
沿着A的每一维计算总和用指定标量dimdim是一个从1N的整数值,其中NA的维数。dim1就是计算A的每一列的总和,2计算A的每一行的总和,以此类推。

B = sum(..., 'double')B = sum(..., dim,'double')
在双精度下(double)执行相加求和,返回double类型的结果,即使Asingle数据类型或者integer数据类型。默认的是integer数据类型。

B = sum(..., 'native')B = sum(..., dim,'native')
native数据类型下执行相加求和,返回相同类型的结果,默认的是singledouble.数据类型。
备注
B = sum(diag(X)) 是求X的迹。
应用举例
三阶幻方为:
M = magic(3)
M =
     8    1    6
     3    5    7
     4    9    2
因为三阶幻方每一列元素总和是相同的。
sum(M) =
     15    15    15
想求每一行元素的的总和,可以用转置或者用dim参数。
转置:
sum(M') =
     15    15    15
dim参数:
sum(M,1)
ans =
    15    15    15
支持非double数据类型
sum函数不仅仅支持double类型数据。
single数据类型:
sum
函数可以应用到single数据类型并返回一个single类型的结果。比如:

sum(single([2 5 8]))
ans =
     15
class(ans)
ans =
single
Integer
数据类型
sum函数应用到以下Integer数据类型时,MATLAB软件返回一个double数据类型的结果:
       int8 and uint8
      int16 and uint16
      int32 and uint32
例如:
sum(single([2 5 8]));
class(ans)
ans =
single
sum([2 5 8]);
class(ans)
ans =
double
如果你想MATLABInteger数据类型的结果是相同的Integer数据类型,可以用:
sum(int8([2 5 8], 'native');
class(ans)
ans =
Size函数解释
d = size(X);    %返回矩阵的行数和列数,保存在d
1d = size(X)
x=[2]                                x1=size(x)=[1     1]
y=[2 3]                              m=size(y)=[1    2]
y=[34 333]                        m=size(y)=[1    2]
y=[5 6 7]                           n=size(y)=[1     3]
y=[3  34 44577]                n=size(y)=[1     3]
xx=[1 33 565 676]             n=size(xx)=[1    4]

[m,n] = size(X)%返回矩阵的行数和列数,分别保存在mn
2[m,n] = size(X)
[m n]=size(y)                     m=1 n=2

m = size(X,dim);%返回矩阵的行数或列数,dim=1返回行数,dim=2返回列数
3 m = size(X,dim)
rand(2,3,4)的维数是3m=size(rand(2,3,4),1)   表示rand(2,3,4)的第一个量
m=size(rand(2,3,4),1)       m=1
m=size(rand(2,3,4),2)      m=3
m=size(rand(2,3,4),3)      m=4
d = size(rand(2,3,4)        d=[2  3  4]
[m,n,p] = size(rand(2,3,4))  m=2 n=3 p=4
4[d1,d2,d3,...,dn] = size(X)
X = ones(3,4,5)
[d1,d2,d3] = size(X)  d1=3 d2=4 d3=5
[d1,d2] = size(X)        d1=3 d2=20
[d1,d2,d3,d4,d5,d6] = size(X)   d1 = 3      d2 =4       d3 =5   d4=d5=d6=1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

8 条回复


岳君青 发表于 2012-10-21 22:50:18
“【3】 m = size(X,dim)
rand(2,3,4)的维数是3,m=size(rand(2,3,4),1)   表示rand(2,3,4)的第一个量
m=size(rand(2,3,4),1)       m=1”

m=size(rand(2,3,4),1)       m=2

周王武耳 发表于 2012-10-23 20:13:52
离散序列求和 y=sum(f(k1:k2)) 是什么意思

caifang0522 发表于 2012-11-13 15:16:25
size(f,3)>1中当f是一幅图像时这个语句表示什么?“3”表示什么?为什么大于1啊
原语句是 if size(f,3)>1   
                x=rgb2gray(x);
             end  

f9865 发表于 2013-8-13 14:30:01
mark学习

life段会 发表于 2013-9-1 17:15:17
谢谢分享

life段会 发表于 2013-9-1 17:15:33
:victory::victory:

jingt 发表于 2013-11-24 11:02:25
X = ones(3,4,5)
[d1,d2,d3,d4,d5,d6] = size(X)   d1 = 3      d2 =4       d3 =5   d4=d5=d6=1
d4,d5,d6为什么是1?
[d1,d2] = size(X)        d1=3 d2=20            d2=4*5=20?

祝婉 发表于 2015-3-18 14:50:50
caifang0522 发表于 2012-11-13 15:16
**** 作者被禁止或删除 内容自动屏蔽 ****

3表示第三个维度是多少?图像至少是1维的  所以用大于1来判断图像是几维的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表