我有一个矩阵(A)的形式(实际上更大):
205 204 201
202 208 202
Run Code Online (Sandbox Code Playgroud)
如何在逐列的基础上统计数字的共同发生率,然后将其输出到矩阵?
我希望最终矩阵从min(A):max(A)(或能够指定特定范围)跨顶部和侧面运行,并且它可以计算每列中数字的共同发生率.使用上面的例子:
200 201 202 203 204 205 206 207 208
200 0 0 0 0 0 0 0 0 0
201 0 0 1 0 0 0 0 0 0
202 0 0 0 0 0 1 0 0 0
203 0 0 0 0 0 0 0 0 0
204 0 0 0 0 0 0 0 0 1
205 0 0 0 0 0 0 0 0 0
206 0 …Run Code Online (Sandbox Code Playgroud) 如果我有一个矢量:
[4,5,6,7,11,12,13,14,21,22,23]
Run Code Online (Sandbox Code Playgroud)
如果没有循环,我怎样才能提取所有连续数字块的开始/结束值,即上述向量的所需结果将是2列向量:
b =
4 7
11 14
21 23
Run Code Online (Sandbox Code Playgroud) 我有一个2D矩阵,其中列的№总是3的倍数(例如250×27) -由于结果的重复组织(A,B,C,A,B,C,A,B,C,等等).我希望重新构造这个矩阵以创建一个包含3列的新矩阵 - 每个列包含每种类型的聚合数据(A,B,C)(例如2250×3).
因此,在矩阵中250×27,列中的所有数据1,4,7,10,13,16,19,22,25将被合并以形成所得到的重新形成矩阵的第一列.
生成的重新整形矩阵中的第二列将包含列中的所有数据2,5,8,11,14,17,20,23,26- 依此类推.
在MATLAB中有一个简单的方法吗?我只知道reshape如果我要合并的列是相邻(1,2,3,4,5,6)而不是非相邻(1,4,7,10,13,16)等.
给定一定范围的范围:
a =
32225 52259
52260 70794
70795 91459
91460 95409
Run Code Online (Sandbox Code Playgroud)
并且单个值x = 61450- 有没有办法确定x在哪个范围内下降而不使用循环来检查每种可能性?在这种情况下,答案是261450属于第二范围.
我正在尝试捕获文件名,同时删除文件扩展名和后缀,例如:
TEST_EXAMPLE_SUFFIX.file
Output = TEST_EXAMPLE
Run Code Online (Sandbox Code Playgroud)
我想在匹配_SUFFIX部分并提取之前的所有字符(不包括_SUFFIX)的基础上这样做.通常我会使用类似的东西:
FILE_EXT=_SUFFIX
/.+?(?=$FILE_EXT)/
Run Code Online (Sandbox Code Playgroud)
但是当它们作为for循环的一部分一起管道时:
for t in $(ls *.fastq | sed -e /.+?(?=$READ1_EXT)/)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
command substitution: line 14: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
如果我有一个矩阵:
A = [1 2 3 4 5; 1 1 6 1 2; 0 0 9 0 1]
A =
1 2 3 4 5
1 1 6 1 2
0 0 9 0 1
Run Code Online (Sandbox Code Playgroud)
如何计算每列的非零条目数?例如,此矩阵的所需输出将是:
2,2,3,2,3
我不知道如何做到这一点size,length或者numel似乎不满足要求.也许最好先删除零条目?
删除包含特定范围之外的数字的矩阵行的最佳方法是什么?例如
A =
200 400
500 200
500 100
600 200
200 100
300 200
Range = [200 500];
Run Code Online (Sandbox Code Playgroud)
然后将删除第3,4和5行,因为它们包含<200和> 500的数字.
给出一个向量:
a = [0;0;2;3;0;2;10;11;0;0;0;4;5;8;0;0;0]
Run Code Online (Sandbox Code Playgroud)
任何人都可以显示或建议一种方法来删除所有零值,除了那些侧面非零值的零值?
以上所需的结果将是:
b = [0;2;3;0;2;10;11;0;0;4;5;8;0]
Run Code Online (Sandbox Code Playgroud)
删除这些值的地方:
[ 0 ; 0; 2; 3; 0; 2; 10; 11; 0; 0 ; 0; 4; 5; 8; 0; 0 ; 0 ]
我不知道从哪里开始这个问题而不必使用一组IF语句,例如:
for k=1:length(a)
if a(k) == 0 && a(k+1) == 0
*delete value*
end
if a(k) == 0 && a(k+1) >0
*keep/store value*
end
if a(k) > 0
*keep/store value*
end
if a(k) == 0 && a(k-1) >0
*keep/store value*
end
end
Run Code Online (Sandbox Code Playgroud)
等等.
我是Perl的新手并试图让它发挥作用.当列1的内容==> 0并且第2列包含"I"(罗马数字为1)时,我希望打印3个特定列.以下内容返回包含> 0但不包含"I"的所有行.
perl -lane 'print "$F[0]\t$F[1]\t$F[5]" if $F[1] > 0 && $F[0]==/I/' input > output
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我也在努力让它与模式完全匹配,即我不希望它拉出"II"或"VIII".
A =
0.75
0.6
0.62
0.51
0.53
0.48
Run Code Online (Sandbox Code Playgroud)
在这样的数组中,如何计算最接近给定数字的x个值的索引?例如:
x = 0.5 %Given number
y = 3; %Number of values closest to (x) to extract
Run Code Online (Sandbox Code Playgroud)
在这里,我们希望将三个最接近的值提取到0.5 - 0.51,0.53和0.48.
[~,I] = min(abs(data-b));
c = data(I);
Run Code Online (Sandbox Code Playgroud)
我到目前为止,但这只提取一个值 - 绝对最接近.
如果我有一个矩阵包含:
n =
49898
148954
224156
224602
167493
100970
50645
21352
8168
2659
806
227
55
12
3
Run Code Online (Sandbox Code Playgroud)
如何使用'n'中的数字来指定for循环应包含的迭代次数?即我希望循环在进行148954之前进行49898次迭代,依此类推.我有其他嵌套的for循环,一旦49889或148954等完成,也需要前进'1'因此我不能只是SUM'n'.我只知道:
for i=n对于i=1:nfor循环的样式,这两个都没有解决这个问题.
一个非常简单的问题,但我似乎无法弄清楚问题.为什么这段代码成功打印了$ F [1]不等于83的所有行:
if ($F[1] != 83) {
print OUT2 "$_\n";
}
Run Code Online (Sandbox Code Playgroud)
但是这个片段(包含一个OR语句)只是打印所有行,忽略了两个条件:
if ($F[1] != 83 || $F[1] != 99) {
print OUT2 "$_\n";
}
Run Code Online (Sandbox Code Playgroud)
期望的结果是打印$ F [1]包含除83或99之外的任何行的所有行.
我编写的许多脚本都接受在单独的.config文件中设置的用户参数,并且来源于:
source "./Example.config" || exit
Run Code Online (Sandbox Code Playgroud)
为了清晰和健壮,我想允许用户在.config文件变量中包含空格,例如:
############################################################
## Example
############################################################
VAR1 = 25
VAR2 = Y
Run Code Online (Sandbox Code Playgroud)
而不是:
VAR1=25
VAR2=Y
Run Code Online (Sandbox Code Playgroud)
在bash脚本中是否有一种简单的方法允许这样做?如果是这样,怎么样?