由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Biology版 - 问个生物计算中的for loop的问题
相关主题
Start to learn coding as a beginner of bioinformatics请教构建过lentiviruse沉默质粒的大侠
包子问:哪里能买到FPLC的200 ul或者250ul的sample loop问一个生物图像处理里面的zero padding的问题
设计shRNA的问题请大神请教:两种单细胞测序技术PicoPLEX和MALBAC的比较
请教一个蛋白突变的问题请教下大神,关于线粒体D-loop转录的问题
请问平板上挑细菌克隆的小木签哪里买?如何编程实现循环嵌套的次数?
inoculation loop一般从哪家公司买Matlab + R: R-Link, RMatlab, or others? (转载)
生物物理的方向可不可以去掉一个偏差最大的值?
请教 影响 DNA looping 的蛋白 (除了 CI,HU 等)excel多列数据如何连成一列?
相关话题的讨论汇总
话题: loop话题: loops话题: fakedata话题: matlab
进入Biology版参与讨论
1 (共1页)
w*********e
发帖数: 286
1
如题,在做一个筛选,需要从大量数据中找到一些outlier,用matlab写了一个for loop
,每次把找到的sample写进一个vector,有没有比较方便的函数?现在是先定义一个初
始变量为[],然后concatenate一下,总感觉效率不高,速度太慢。。。。
e*********6
发帖数: 3453
2
你说慢在哪里?从算法看应该是O(n)应该就是最好了。如果觉得要反复擦写内存,就数
数有几个outliner,再开辟空间,再过一次

loop

【在 w*********e 的大作中提到】
: 如题,在做一个筛选,需要从大量数据中找到一些outlier,用matlab写了一个for loop
: ,每次把找到的sample写进一个vector,有没有比较方便的函数?现在是先定义一个初
: 始变量为[],然后concatenate一下,总感觉效率不高,速度太慢。。。。

c***n
发帖数: 223
3
1. 用matlab尽量避开for loop
2. 能事先知道结果的大小,最好先分配内存。动态分配内存特别慢,尤其是后来数组
大了之后。
3. 可以把找到的sample的index写进vector,而不是数据本身。
% find values that are larger than 0.8 from a 10000x1 vector of Gaussian %
random numbers
fakeData = randn(10000, 1);
collectedIdx = [];
for idx = 1:numel(fakeData)
if fakeData(idx) > 0.8
collectedIdx = [collectedIdx, idx];
end
end
collectedData = fakeData(collectedIdx);
当然最快的方法是用slicing,一行搞定:
collectedData = fakeData(fakeData>0.8);

loop

【在 w*********e 的大作中提到】
: 如题,在做一个筛选,需要从大量数据中找到一些outlier,用matlab写了一个for loop
: ,每次把找到的sample写进一个vector,有没有比较方便的函数?现在是先定义一个初
: 始变量为[],然后concatenate一下,总感觉效率不高,速度太慢。。。。

e*********6
发帖数: 3453
4
额。。。
不过一般自带的都比自己写的快

【在 c***n 的大作中提到】
: 1. 用matlab尽量避开for loop
: 2. 能事先知道结果的大小,最好先分配内存。动态分配内存特别慢,尤其是后来数组
: 大了之后。
: 3. 可以把找到的sample的index写进vector,而不是数据本身。
: % find values that are larger than 0.8 from a 10000x1 vector of Gaussian %
: random numbers
: fakeData = randn(10000, 1);
: collectedIdx = [];
: for idx = 1:numel(fakeData)
: if fakeData(idx) > 0.8

s******s
发帖数: 13035
5
不用matlab。不过outlier比较多的话,这种append操作很慢的。
一般是给个大数组,填满了就扩一倍继续

loop

【在 w*********e 的大作中提到】
: 如题,在做一个筛选,需要从大量数据中找到一些outlier,用matlab写了一个for loop
: ,每次把找到的sample写进一个vector,有没有比较方便的函数?现在是先定义一个初
: 始变量为[],然后concatenate一下,总感觉效率不高,速度太慢。。。。

e*********6
发帖数: 3453
6
我只想知道这里的vector是个啥东西,是linked list还是array

【在 s******s 的大作中提到】
: 不用matlab。不过outlier比较多的话,这种append操作很慢的。
: 一般是给个大数组,填满了就扩一倍继续
:
: loop

g********6
发帖数: 86
7
Lz你贴几行数据来看看,感觉大家都跃跃欲试了哈哈。感觉应该可以避开for loop.如
果是R的话应该可以用apply函数.在Perl里可以逐行loop文件直接print outlier,极其
经济

loop

【在 w*********e 的大作中提到】
: 如题,在做一个筛选,需要从大量数据中找到一些outlier,用matlab写了一个for loop
: ,每次把找到的sample写进一个vector,有没有比较方便的函数?现在是先定义一个初
: 始变量为[],然后concatenate一下,总感觉效率不高,速度太慢。。。。

n******7
发帖数: 12463
8
R里面为了performance用apply避开for loop是个普遍的误解
参看
http://stackoverflow.com/questions/2275896/is-rs-apply-family-m
http://stackoverflow.com/questions/7142767/why-are-loops-slow-i
特别的:(Do not avoid loops simply for the sake of avoiding loops)
It's not always the case that loops are slow and apply is fast. There's a
nice discussion of this in the May, 2008, issue of R News:
Uwe Ligges and John Fox. R Help Desk: How can I avoid this loop or make it
faster? R News, 8(1):46-50, May 2008.
In the section "Loops!" (starting on pg 48), they say:
Many comments about R state that using loops is a particularly bad idea.
This is not necessarily true. In certain cases, it is difficult to write
vectorized code, or vectorized code may consume a huge amount of memory.
They further suggest:
Initialize new objects to full length before the loop, rather than
increasing their size within the loop.
Do not do things in a loop that can be done outside the loop.
Do not avoid loops simply for the sake of avoiding loops.

【在 g********6 的大作中提到】
: Lz你贴几行数据来看看,感觉大家都跃跃欲试了哈哈。感觉应该可以避开for loop.如
: 果是R的话应该可以用apply函数.在Perl里可以逐行loop文件直接print outlier,极其
: 经济
:
: loop

s******s
发帖数: 13035
9
Well. Avoid loop 在r里面不仅是效率,更是style. 当然确实有时候用Loop更简便一点

【在 n******7 的大作中提到】
: R里面为了performance用apply避开for loop是个普遍的误解
: 参看
: http://stackoverflow.com/questions/2275896/is-rs-apply-family-m
: http://stackoverflow.com/questions/7142767/why-are-loops-slow-i
: 特别的:(Do not avoid loops simply for the sake of avoiding loops)
: It's not always the case that loops are slow and apply is fast. There's a
: nice discussion of this in the May, 2008, issue of R News:
: Uwe Ligges and John Fox. R Help Desk: How can I avoid this loop or make it
: faster? R News, 8(1):46-50, May 2008.
: In the section "Loops!" (starting on pg 48), they say:

n******7
发帖数: 12463
10
我说了为了performance用apply意义不大
lz遇到的不就是performance问题吗
另外我感觉lz短时间用不好apply,也没必要
allSamples[is.outlier(allSamples)]就OK了

一点

【在 s******s 的大作中提到】
: Well. Avoid loop 在r里面不仅是效率,更是style. 当然确实有时候用Loop更简便一点
f*******9
发帖数: 74
11
你这个问题简单得很,根本就不是loop的问题,就是一个逻辑索引的技巧而已,如3楼
所指,newVector = data(indexOfOutliers)。建议你好好学习一下Matlab的帮助文档。
话说回来,Matlab的向量化(vectorized)操作效率很高,比C的for循环还要快。而在
Matlab里面用for循环的话是最慢的。R和Matlab相似。
K****n
发帖数: 5970
12
太牛了

档。

【在 f*******9 的大作中提到】
: 你这个问题简单得很,根本就不是loop的问题,就是一个逻辑索引的技巧而已,如3楼
: 所指,newVector = data(indexOfOutliers)。建议你好好学习一下Matlab的帮助文档。
: 话说回来,Matlab的向量化(vectorized)操作效率很高,比C的for循环还要快。而在
: Matlab里面用for循环的话是最慢的。R和Matlab相似。

t*****z
发帖数: 1598
13
学习了
[发表自未名空间手机版 - m.mitbbs.com]
1 (共1页)
进入Biology版参与讨论
相关主题
excel多列数据如何连成一列?请问平板上挑细菌克隆的小木签哪里买?
How to define an outlier in statistical analysis?inoculation loop一般从哪家公司买
刚刚在lab meeting上吵架了生物物理的方向
统计学问题求教请教 影响 DNA looping 的蛋白 (除了 CI,HU 等)
Start to learn coding as a beginner of bioinformatics请教构建过lentiviruse沉默质粒的大侠
包子问:哪里能买到FPLC的200 ul或者250ul的sample loop问一个生物图像处理里面的zero padding的问题
设计shRNA的问题请大神请教:两种单细胞测序技术PicoPLEX和MALBAC的比较
请教一个蛋白突变的问题请教下大神,关于线粒体D-loop转录的问题
相关话题的讨论汇总
话题: loop话题: loops话题: fakedata话题: matlab