当前位置: 首页 > 知识库问答 >
问题:

MATLAB如何计算向量中的0和1

孟文栋
2023-03-14

设一个向量v,长度nv=randi([0 1],1, n),随机包含0或1。

获取向量的有效方法是什么,该向量指示每个0段或1段中交替有多少个0或1?

例子:

v = [1 0 0 0 1 1 0 0 1]   ----> 
    counts = [0 1 3 2 2 1]  (*0* zero, *1* one, *3* zeros, ....)

v = [0 0 1 0 0 0]   ---->
    counts = [2 1 3]

请注意,始终先计算0,如果向量以1开头,则结果向量的第一个条目,即计数(1),应为0。

共有2个答案

魏凡
2023-03-14

你可以这样做(它总是先计算零,即使它们不存在):

aux = cumsum(abs(diff([0 v])));
counts = histc(aux, 0:max(aux));
clear aux;
周宸
2023-03-14

这是一个相当简单的方法:

diff(find(diff([inf v inf])))

如果您还想知道每个段对应的值,扩展应该不难。

 类似资料:
  • 主要内容:引用向量的元素,向量运算向量是数字的一维数组。在MATLAB中,允许创建两种类型的向量 - 行向量 列向量 行向量 行向量是通过用方括号中的元素集合来创建的,使用空格或逗号分隔元素。 MATLAB将执行上述语句并返回以下结果 - 列向量 列向量是通过用方括号中的元素集合来创建的,分号用于分隔元素。 MATLAB将执行上述语句,返回以下结果 - 引用向量的元素 可以通过多种方式来引用一个或多个向量的元素。向量的第个分量叫作

  • 我试图从我有的方向向量(从中我可以得到俯仰和偏航)和滚动来计算一个向上向量。我需要这个,这样我就可以做一个四元数。 有人知道我怎么做吗?

  • 我有一个类似的问题:MATLAB中的加权随机数 此时,我在程序中使用randsample如下: 因此为每个人描述了他们将选择的邻居。 我的矩阵(按行读取)描述了一个人选择邻居的概率。例如,第一行表示第一个人将以50%的概率选择节点2或3。他们无法选择自己的节点1。当我放大我的模型时,他们选择邻居的概率总是相等的,是邻居数量的1/1。为了简洁起见,我在这里硬编码了T矩阵。 我尝试按照链接主题中的建议

  • 我需要计算和的中位数。但是,要计算每个中位数,我必须包括具有相同面和相同类别的所有行。例如,要计算第二行的中位数,我必须包括行 2 和 3,因为我在第 2 行和第 3 行中具有相同的面和 。我正在尝试使用循环函数,但我不知道如何包含此条件。 这就像一个条件中位数。 非常感谢您的关注。 这里,就是例子:

  • 版本: Matlab 2009a 我正在生成一个大小向量 现在,Matlab将返回的元素向量[240,63,0]改为[-1,1],大小为 PS:我想从大小矩阵上的所有trhe值中减去或加上'1'

  • 我有一个问题,我不知道如何使用Java/LWJGL在OpenGL中渲染方向向量。 我有以下系统: X位于屏幕右侧 因此我走在XZ平面上,现在我想实现/已经实现了WASD运动,它应该与我当前前进的方向有关。(W=向前到相机看方向,S=向后等) 我有一个偏航角,定义如下: 如果一直向前,则为0度 现在我只想要一个代表偏航方向的3D矢量,我该怎么做呢? 我正在使用以下Java代码,包括答案,但似乎还有另