小编Ann*_*ann的帖子

计算矩阵列中数字的共同发生率 - MATLAB

我有一个矩阵(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)

matlab

5
推荐指数
1
解决办法
129
查看次数

连续数字块的开始/停止值

如果我有一个矢量:

[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)

indexing matlab

5
推荐指数
1
解决办法
91
查看次数

将矩阵折叠成列

我有一个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)等.

arrays matlab matrix reshape

5
推荐指数
1
解决办法
254
查看次数

确定一个数字落入哪个范围

给定一定范围的范围:

a =

    32225   52259
    52260   70794
    70795   91459
    91460   95409
Run Code Online (Sandbox Code Playgroud)

并且单个值x = 61450- 有没有办法确定x在哪个范围内下降而不使用循环来检查每种可能性?在这种情况下,答案是261450属于第二范围.

matlab

4
推荐指数
2
解决办法
85
查看次数

正则表达式 - 提取直到匹配并且不包括该匹配

我正在尝试捕获文件名,同时删除文件扩展名和后缀,例如:

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)

我做错了什么?

bash

4
推荐指数
1
解决办法
63
查看次数

计算矩阵每列中的非零条目

如果我有一个矩阵:

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似乎不满足要求.也许最好先删除零条目?

matlab

2
推荐指数
1
解决办法
2185
查看次数

删除包含特定范围之外的任何数字的行 - MATLAB

删除包含特定范围之外的数字的矩阵行的最佳方法是什么?例如

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的数字.

matlab

2
推荐指数
1
解决办法
216
查看次数

除去那些侧翼非零值以外的所有零值

给出一个向量:

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)

等等.

arrays matlab vector

2
推荐指数
2
解决办法
168
查看次数

如果多个匹配则打印行

我是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".

perl text

1
推荐指数
1
解决办法
57
查看次数

查找数组中给定值的最接近的值集

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)

我到目前为止,但这只提取一个值 - 绝对最接近.

matlab

1
推荐指数
1
解决办法
159
查看次数

直接访问for循环中的矩阵值

如果我有一个矩阵包含:

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循环的样式,这两个都没有解决这个问题.

matlab

0
推荐指数
1
解决办法
42
查看次数

包含OR perl的IF语句

一个非常简单的问题,但我似乎无法弄清楚问题.为什么这段代码成功打印了$ 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之外的任何行的所有行.

perl if-statement

0
推荐指数
1
解决办法
84
查看次数

允许用户设置的变量中的空格/空格

我编写的许多脚本都接受在单独的.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脚本中是否有一种简单的方法允许这样做?如果是这样,怎么样?

bash

0
推荐指数
1
解决办法
144
查看次数

标签 统计

matlab ×9

arrays ×2

bash ×2

perl ×2

if-statement ×1

indexing ×1

matrix ×1

reshape ×1

text ×1

vector ×1