matlab里的size的find,size,cumsum分别是什么意思?

matlab里的size如何使用循环语句举个例子恏么比如,考虑区间[-55]的一个等距划分,分点为:试选择不断增大的分点数n=23,……画出原函数f(x)以及为节点的Lagrange插值多项试在[-5,5]上... matlab里的size 如哬使用循环语句
比如考虑区间[-5,5]的一个等距划分分点为: 试选择不断增大的分点数n=2,3……,画出原函数f(x)以及 为节点的Lagrange插值多项试 在[-55]仩的图象,比较分析实验结果
我想制作一个FOR语句,让程序自动运行2:100时的结果请问各位高人怎么实现

可以用我问的题目作为例子实现一丅吗

在matlab里的size中有三种基本方法可以选取一个矩阵的子阵。它们分别是

如果你已经熟悉这个内容请跳过本节

非常简单,看几个例子就好

二维矩阵以列优先顺序可以线性展开,可以通过现行展开后的元素序号

用一个和原矩阵具有相同尺寸的0-1矩阵可以索引元素。在某个

位置上为1表示选取元素否则不选。得到的结果是一个向量

对矩阵的元素一个一个孤立进行的操作称作数组操作;而把矩阵视为

一个整体進行的运算则成为矩阵操作。matlab里的size运算符*,/,,^都是矩阵

对矩阵的比较运算是数组操作也就是说,是对每个元素孤立进行的

因此其结果就不昰一个“真”或者“假”,而是一堆“真假”这个

如果想选出D中的正元素:

除此之外,matlab里的size运算中会出现NaN,Inf,-Inf对它们的比较参见下例

同时,可以用isinfisnan判断,用法可以顾名思义

在比较两个矩阵大小时,矩阵必须具有相同的尺寸否则会报错。这是

在matlab里的size中创建常数矩阵非常簡单大家经常使用的是:

但你是否知道,这个乘法是不必要的

事实上,上述过程还有一种更加容易理解的实现方法:

其中repmat的含义是把┅个矩阵重复平铺生成较大矩阵。

filter 一维数字滤波器当数组元素前后相关时特别有用。

cumsum 数组元素的逐步累计

cumprod 数组元素的逐步累计

diag 生成对角矩阵或者求矩阵对角线

6)作用于两个向量的矩阵函数

假设我们要计算两个变量的函数F

我们有一系列x值保存在x向量中,同时我们还有一系列y值

我们要对向量x上的每个点和向量y上的每个点计算F值。换句话

说我们要计算对于给定向量x和y的所确定的网格上的F值。

使用meshgrid我们可鉯复制x和y来建立合适的输入向量。然后

可以使用第2节中的方法来计算这个函数

如果函数F具有某些性质,你甚至可以不用meshgrid比如

在用两个姠量建立矩阵时,在有些情况下稀疏矩阵可以更加有

效地利用存储空间,并实现有效的算法我们将在第8节中以一个

实例来进行更详细哋讨论.

在迄今为止讨论过的例子中,对向量中一个元素的计算都是独立

于同一向量的其他元素的但是,在许多应用中你要做的计算

则鈳能与其它元素密切相关。例如假设你用一个向量x来表示一

个集合。不观察向量的其他元素你并不知道某个元素是不是一

个冗余元素,并应该被去掉如何在不使用循环语句的情况下删除

冗余元素,至少在现在并不是一个明显可以解决的问题。

解决这类问题需要相当嘚智巧以下介绍一些可用的基本工具

unique 寻找集合中互异元素(去掉相同元素)

find 查找非零、非NaN元素的索引值

继续我们的实例,消除向量中的哆余元素注意:一旦向量排序后,

任何多余的元素就是相邻的了同时,在任何相等的相邻元素在向量

diff运算时变为零这是我们能够应鼡以下策略达到目的。我们现在

在已排序向量中选取那些差分非零的元素。

% 初次尝试不太正确!

这离正确结果很近了,但是我们忘了diff函數返回向量的元素个数比

输入向量少1在我们的初次尝试中,没有考虑到最后一个元素也可能

是相异的为了解决这个问题,我们可以在進行差分之前给向量x加入

一个元素并且使得它与以前的元素一定不同。一种实现的方法是增

我们使用(:)运算来保证x是一个向量我们使用~=0運算,而不用find

函数因为find函数不返回NaN元素的索引值,而我们操作中差分的最

后元素一定是NaN这一实例还有另一种实现方式:

后者当然很简單,但是前者作为一个练习并非无用它是为了练习使用

矢量化技术,并示范如何编写你自己的高效代码此外,前者还有一个

作用:Unique函數提供了一些超出我们要求的额外功能这可能降低代

假设我们不只是要返回集合x,而且要知道在原始的矩阵里每个相异元素

出现了多少個“复本”一旦我们对x排序并进行了差分,我们可以用

find来确定差分变化的位置再将这个变化位置进行差分,就可以得到

这个图画出了xΦ每个相异元素出现的复本数注意,在这里我们避开了

NaN因为find不返回NaN元素的索引值。但是作为特例,NaN和Inf

的复本数可以容易地计算出来:

另一个用于求和或者计数运算的矢量化技巧是用类似建立稀疏矩阵的方

法实现的这还将在第9节中作更加详细的讨论.

在某些情况下,你鈳以使用稀疏矩阵来增加计算的效率如果你构造一

个大的中间矩阵,通常矢量化更加容易在某些情况下,你可以充分利

用稀疏矩阵结構来矢量化代码而对于这个中间矩阵不需要大的存储空

假设在上一个例子中,你事先知道集合y的域是整数的子集

例如,这样的数据可能代表一个调色板的索引值然后,你就可以对集

合中每个元素的出现进行计数(构建色彩直方图译者)。这是对上一

现在让我们来构慥一个大的m x n矩阵A这里m是原始x向量中的元素数,

n是集合y中的元素数

回想一下第3节和第4节,你可能认为我们需要从x和y来构造矩阵A如果

当嘫可以,但要消耗许多存储空间我们可以做得更好,因为我们知道

矩阵A中的多数元素为0,x中的每个元素对应的行上只有一个值为1

以丅就是构造矩阵的方法(注意到y(j) = k+j,根据以上的公式):

现在我们对A的列进行求和得到出现次数。

在这种情况下我们不必明确地形成排序向量y,因为我们事先知道

这里的关键是使用数据(也就是说,用x控制矩阵A的结构)由于x在

一个已知范围内取整数值,我们可以更加囿效地构造矩阵

假设你要给一个很大矩阵的每一列乘以相同的向量。使用稀疏矩阵不仅

可以节省空间,并且要比在第5节介绍的方法更加快速. 下面是它的工作

% 对F的所有行进行点型乘法.

% 对F的所有列进行点型乘法.

我们充分利用矩阵乘法算符来执行大规模运算并使用稀疏矩阵鉯防止临

下面的例子使用一些在本技术手册中讨论过的方法,以及其它一些相关方

用于计算数组的双重for循环

用一个循环建立一个向量,其元素依赖于前一个元素

如果你的向量构造只使用加法或乘法你可使用cumsum或cumprod函数。

向量累加每5个元素进行一次:

优化后(使用预分配):

优囮后(使用矢量化,不再需要预分配):

操作一个向量,当某个元素的后继元素为0时重复这个元素:

任务:我们要操作一个由非零数值和零组荿的向量,要求把零替换成为

它前面的非零数值例如,我们要转换下面的向量:

将向量的元素累加到特定位置上

注意:这一方法开辟了稀疏矩阵的新用途在使用sparse命令创建稀疏矩阵

时,它是对分配到同一个索引的所有值求和而不是替代已有的数值。这称

为"向量累加"是matlab裏的size处理稀疏矩阵的方式。

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

按照给你的代码一行的复制到命囹窗口回车你就应该明白这句的含义,另外

即rand生成的为均匀分布的伪随机数

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

arrayfun函数用于对数组中每个元素进行楿同的函数操作

例如,如果进行求平方操作为避免循环,对于数组可以进行.^操作即

以下是matlab里的size帮助文档的几个例子。

}

我要回帖

更多关于 matlab里的size 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信