- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于 matlab 专家来说,这一半是问题,一半是挑战:我想要一个函数接受逻辑数组(假/真),并在结构数组中给出包含 true 的所有连续区域的开头和结尾。
像这样的事情:
b = getBounds([1 0 0 1 1 1 0 0 0 1 1 0 0])
应该返回
b = 3x1 struct array with fields:
beg
end
和
>> b(2)
ans =
beg: 4
end: 6
我已经有了一个实现,但我真的不知道如何很好地处理结构数组,所以我想问你会怎么做 - 我必须通过 mat2cell 并处理,当我必须处理时更大的结构数组会变得很麻烦。我的看起来像这样:
df = diff([0 foo 0]);
a = find(df==1); l = numel(a);
a = mat2cell(a',ones(1,l))
[s(1:l).beg] = deal(a{:});
b = (find(df==-1)-1);
b = mat2cell(b',ones(1,l))
[s(1:l).end] = deal(b{:});
最佳答案
我不明白你为什么要使用 mat2cell 等。你把这个问题看得太多了。
给定一个 bool 行向量 V,找到序列中所有组的起点和终点。
V = [1 0 0 1 1 1 0 0 0 1 1 0 0];
你可以从 diff 中获得大部分信息。因此
D = diff(V);
b.beg = 1 + find(D == 1);
这将定位所有组的起点,除了可能的第一组。因此添加一个简单的测试。
if V(1)
b.beg = [1,b.beg];
end
同样,每组都必须在另一组开始之前结束。所以只要找到终点,再次担心最后一组是否会被错过。
b.end = find(D == -1);
if V(end)
b.end(end+1) = numel(V);
end
结果正如我们所期望的。
b
b =
beg: [1 4 10]
end: [1 6 11]
事实上,我们可以更轻松地完成这一切。一个简单的解决方案是在进行比较之前始终在 V 的开头和结尾附加一个零。看看这是如何工作的。
D = diff([0,V,0]);
b.beg = find(D == 1);
b.end = find(D == -1) - 1;
结果再次符合预期。
b
b =
beg: [1 4 10]
end: [1 6 11]
顺便说一句,我可能会避免在这里使用 end,即使作为结构体字段名称也是如此。使用 matlab 关键字作为变量名是一个坏习惯,即使它们只是字段名。
关于matlab fxn : find contiguous regions and return bounds in struct array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2212201/
题目地址:https://leetcode.com/problems/contiguous-array/description/ 题目描述 Given a binary array, find t
问。给定两个长度相等的数组 A 和 B,找到索引 [i,j] 的最大可能连续子数组,使得 max(A[i: j]) B[j]: Bq.pop() Bq.app
[2018-08-01:在帖子底部附近查看新 Material 。] 我只是遇到了一个Q-n-A here,其中包括一个使用我从未见过的规范引用范围的函数的示例。我试了一下,发现使用这种类型的引用时,
问。给定两个长度相等的数组 A 和 B,找到索引 [i,j] 的最大可能连续子数组,使得 max(A[i: j]) B[j]: Bq.pop() Bq.app
我有一组 4 个字符串,想生成一个包含 16 个元素的列表,但是执行规则(或获得与执行此类规则相同的结果)永远不会在结果中的两个连续位置重复相同的元素列表。 作为 Python 的新手,我去检查了 r
在caffe文档中:http://caffe.berkeleyvision.org/tutorial/net_layer_blob.html Blob storage and communicatio
我拥有的是一张包含数据的工作表,我想定义一个不连续的范围,例如,可用于创建图表。 只要范围是矩形,定义范围就很容易。 range := ASheet.Range['A1', 'B10']; 这将创建一
在我的64 位 linux-rhel62 机器中,我想计算进程中可用的“最大连续可用空间”。似乎可以使用/proc/self/maps 计算详细信息。但我不知道如何使用该文件来计算连续的可用空间。 知
float* tempBuf = new float[maxVoices](); 上面的结果会不会 1) 16 字节对齐的内存? 2) 确认是连续的内存? 我想要的是: float tempBuf[m
我在 cython 中编写了以下函数来估计对数似然 @cython.boundscheck(False) @cython.wraparound(False) def likelihood(double
这个问题已经有答案了: Create grouping variable for consecutive sequences and split vector (5 个回答) 已关闭去年。 我想将数据
安装 Yosemite 后,我不得不升级 numpy、PyOpenGL 等。 现在,一个以前工作的程序给了我以下堆栈跟踪: file "latebind.pyx", line 44, in OpenG
我正在尝试向量化一些对性能极为关键的代码。在高层次上,每次循环迭代从一个小数组中的非连续位置读取六个浮点数,然后将这些值转换为 double 并将它们添加到六个不同的 double 累加器中。这些累加
aarch64 架构没有多重存储和加载指令,即没有与 armv7 arch 中的 stm 和 ldm 等效的指令。相反,您必须使用 stp 和 ldp 指令来存储和加载寄存器对。 根据ARM引用手册:
考虑这个数组: In [1]: a = numpy.array([[1,2],[3,4]], dtype=numpy.uint8) In [2]: a.strides Out[2]: (2, 1) I
给定 template struct Vector3d { T x, y, z; }; 假设 x、y 和 z 位于连续的内存位置是否安全? 对于 T = float 和 T = double 至少可
我正在尝试修改Kadane算法,以解决更具体的问题。。这是最大子数组问题的代码。我要做的是找出最大长度为K的子数组。。例如:我们有一个数组A=[3,-5 1 2,-1 4,-3 1,-2],我们希望找
对于 matlab 专家来说,这一半是问题,一半是挑战:我想要一个函数接受逻辑数组(假/真),并在结构数组中给出包含 true 的所有连续区域的开头和结尾。 像这样的事情: b = getBounds
假设我有一些如下所示的 HTML: one two three I'm a
在下面的程序中,我得到了输出1个00213056716811268666872686916 而根据我的说法,输出必须是1个2个3个4个5个6个78 因为数组元素存储在连续的内存位置,我正在以连续的方式
我是一名优秀的程序员,十分优秀!