草庐IT

matlab中sum函数的用法

一只佳佳怪 2023-08-26 原文

一、语法

S = sum(A)
S = sum(A,'all')
S = sum(A,dim)
S = sum(A,vecdim)
S = sum(___,outtype)
S = sum(___,nanflag)

二、说明

1、S = sum(A) 返回 A 沿大小不等于 1 的第一个数组维度的元素之和。
如果 A 是向量,则 sum(A) 返回元素之和。
如果 A 是矩阵,则 sum(A) 将返回包含每列总和的行向量。
如果 A 是多维数组,则 sum(A) 沿大小不等于 1 的第一个数组维度计算,并将这些元素视为向量。此维度会变为 1,而所有其他维度的大小保持不变。

2、S = sum(A,‘all’) 计算 A 的所有元素的总和。

3、S = sum(A,dim) 沿维度 dim 返回总和。例如,如果 A 为矩阵,则 sum(A,2) 是包含每一行总和的列向量。

4、S = sum(A,vecdim) 根据向量 vecdim 中指定的维度对 A 的元素求和。例如,如果 A 是矩阵,则 sum(A,[1 2]) 是 A 中所有元素的总和,因为矩阵的每个元素包含在由维度 1 和 2 定义的数组切片中。

5、S = sum(___,outtype) 使用上述语法中的任何输入参数返回指定数据类型的总和。outtype 可以是 ‘default’、‘double’ 或 ‘native’。

6、S = sum(___,nanflag) 指定在上述任意语法的计算中包括还是忽略 NaN 值。sum(A,‘includenan’) 会在计算中包括所有 NaN 值,而 sum(A,‘omitnan’) 则忽略这些值。

三、举例

1、向量元素的总和

创建一个向量并计算各个元素的总和。

A = 1:10;
S = sum(A)

S = 55

2、矩阵列总和

创建一个矩阵并计算每列中元素的总和。

A = [1 3 2; 4 2 5; 6 1 4]

A = 3×3
1 3 2
4 2 5
6 1 4

S = sum(A)

S = 1×3
11 6 11

3、矩阵行总和

创建一个矩阵并计算每行中元素的总和。

S = sum(A,2)

S = 3×1
6
11
11

4、数组切片总和

使用向量维度参数来操作数组的特定切片。
创建所有元素为 1 的三维数组。

A = ones(4,3,2);

要对 A 的每个页面中的所有元素求和,请使用向量维度参数指定要求和的维度(行和列)。由于两个页面均为 4×3 矩阵,因此每页的总和为 12。

S1 = sum(A,[1 2])

S1 =
S1(:,:,1) =
12
S1(:,:,2) =
12
如果沿第一个维度对 A 进行切片,则可以对得到的 4 个页面的元素求和,每个页面为 3×2 矩阵。

S2 = sum(A,[2 3])

S2 = 4×1
6
6
6
6
沿第二个维度切片,每个页面总和超过 4×2 矩阵。

S3 = sum(A,[1 3])

S3 = 1×3
8 8 8
要对数组的所有维度求和,可以在向量维度参数中指定每个维度,或使用 ‘all’ 选项。

S4 = sum(A,[1 2 3])

S4 = 24

Sall = sum(A,'all')

Sall = 24

5、三维数组的总和

创建一个由 1 值组成的 4×2×3 数组,并计算沿第三个维度的总和。

A = ones(4,2,3);
S = sum(A,3)

S = 4×2
3 3
3 3
3 3
3 3

6、32 位整数之和

创建一个由 32 位整数组成的向量,并通过将输出类型指定为 native 来计算其元素的 int32 总和。

A = int32(1:10);
S = sum(A,'native')

A = int32(1:10);
S = sum(A,‘native’)

7、总和,不包括 NaN

创建一个向量并计算其总和,不包括 NaN 值。

A = [1.77 -0.005 3.98 -2.95 NaN 0.34 NaN 0.19];
S = sum(A,'omitnan')

S = 3.3250
如果您不指定 ‘omitnan’,则 sum(A) 会返回 NaN。

有关matlab中sum函数的用法的更多相关文章

  1. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  2. ruby-on-rails - 在 ruby​​ 中使用 gsub 函数替换单词 - 2

    我正在尝试用ruby​​中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了

  3. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  4. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  5. ruby - 在 Ruby 中按名称传递函数 - 2

    如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只

  6. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  7. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  8. ruby-on-rails - 将字符串转换为 ruby​​-on-rails 中的函数 - 2

    我需要一个通过输入字符串进行计算的方法,像这样function="(a/b)*100"a=25b=50function.something>>50有什么方法吗? 最佳答案 您可以使用instance_eval:function="(a/b)*100"a=25.0b=50instance_evalfunction#=>50.0请注意,使用eval本质上是不安全的,尤其是当您使用外部输入时,因为它可能包含注入(inject)的恶意代码。另请注意,a设置为25.0而不是25,因为如果它是整数a/b将导致0(整数)。

  9. ruby - 在 ruby​​ 中使用 .try 函数和 .map 函数 - 2

    我需要从json记录中获取一些值并像下面这样提取curr_json_doc['title']['genre'].map{|s|s['name']}.join(',')但对于某些记录,curr_json_doc['title']['genre']可以为空。所以我想对map和join()使用try函数。我试过如下curr_json_doc['title']['genre'].try(:map,{|s|s['name']}).try(:join,(','))但是没用。 最佳答案 你没有正确传递block。block被传递给参数括号外的方法

  10. ruby - 是否可以从也在该模块中的类内部调用模块函数 - 2

    在这段Ruby代码中:ModuleMClassC当我尝试运行时出现“'M:Module'的未定义方法'helper'”错误c=M::C.new("world")c.work但直接从另一个类调用M::helper("world")工作正常。类不能调用在定义它们的同一模块中定义的模块函数吗?除了将类移出模块外,还有其他解决方法吗? 最佳答案 为了调用M::helper,你需要将它定义为defself.helper;结束为了进行比较,请查看以下修改后的代码段中的helper和helper2moduleMclassC

随机推荐