小编Glo*_*ria的帖子

将某些文本放入matlab中的向量中

可能重复:
在matlab中从文本文件中查找特定数据

我已经使用以下代码打开了标题为'gos.txt'的文本文件:

s={}; 
fid = fopen('gos.txt'); 
tline = fgetl(fid); 
while ischar(tline) 
   s=[s;tline]; 
   tline = fgetl(fid); 
end
Run Code Online (Sandbox Code Playgroud)

我得到的结果如下:s =

'[Term]'    
'id: GO:0008150'
'name: biological_process'
'namespace: biological_process'
'alt_id: GO:0000004'
'alt_id: GO:0007582'
[1x243 char]
[1x445 char]
'subset: goslim_aspergillus'
'subset: goslim_candida'
'subset: goslim_yeast'
'subset: gosubset_prok'
'synonym: "biological process" EXACT []'
'synonym: "biological process unknown" NARROW []'
'synonym: "physiological process" EXACT []'
'xref: Wikipedia:Biological_process'
'[Term]'    
'id: GO:0016740'
'name: transferase activity'
'namespace: molecular_function'
[1x326 char]
'subset: goslim_aspergillus'
'subset: goslim_candida'
'subset: goslim_metagenomics'
'subset: goslim_pir'
'subset: goslim_plant' …
Run Code Online (Sandbox Code Playgroud)

matlab character

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

从matlab中的单元格数组中删除包含零的行

我有一个由某个代码产生的单元格数组如下:

m = 

    [         0]    'GO:0008150'
    'GO:0008150'    'GO:0016740'
    'GO:0016740'    'GO:0016787'
    'GO:0016787'    'GO:0006810'
    'GO:0008150'    'GO:0006412'
    'GO:0016740'    'GO:0004672'
    'GO:0016740'    'GO:0016779'
    'GO:0016787'    'GO:0004386'
    'GO:0016787'    'GO:0003774'
    'GO:0016787'    'GO:0016298'
    'GO:0006810'    'GO:0016192'
    'GO:0006412'    'GO:0005215'
    'GO:0004672'    'GO:0030533'
    [         0]    'GO:0008150'
    [         0]    'GO:0016740'
    'GO:0008150'    'GO:0016787'
    'GO:0008150'    'GO:0006810'
    'GO:0006810'    'GO:0006412'
    [         0]    'GO:0004672'
    [         0]    'GO:0016779'
    [         0]    'GO:0004386'
    'GO:0016192'    'GO:0003774'
    [         0]    'GO:0016298'
    [         0]    'GO:0016192'
    'GO:0006810'    'GO:0005215'
    'GO:0005215'    'GO:0030533'
Run Code Online (Sandbox Code Playgroud)

我需要删除包含零的行(例如:第一行应该被删除,因为我们在第一列中有一个零).那么如何从这个不包含零的数组创建一个数组呢?

matlab cells

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

在Matlab中提高函数调用的速度

我有一个带调用函数的代码,它给出了系统中每个基因的类型.我可以通过比较每个基因与其子女和父母的顺序来找到它.代码工作正常,有一小部分单元格阵列,但当我将数量增加到数千时,需要几个小时.代码是:

Types=[];
type1=level1_root; % it is fixed value (GO:0008150)
% sample values for p1 and c1 are given below
for k=1:100
    type{k}=type_fc(p1,c1,type1); % a function call - see function below
    type1=type{k}'; %'
    temp1=num2cell(repmat(k+1,length(type1),1));
    type1=[type1 temp1];
    Types=[Types; type1];
 end
 % display the output:
 Types
Run Code Online (Sandbox Code Playgroud)

子功能:

function type=type_fc(p1,c1,type1)
type=[];
for j=1:length(type1)
    for i=1:length(p1)
        a=[p1(i),c1(i)];
        if isequal(a(1), type1(j))
            type=[type a(2)];
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

对于13个基因,我有这些样本输入:

p1'= %refer to parent genes  
      'GO:0008150'
      'GO:0016740'
      'GO:0016787'
      'GO:0008150'
      'GO:0016740'
      'GO:0016740'
      'GO:0016787'
      'GO:0016787'
      'GO:0016787'
      'GO:0006810'
      'GO:0006412'
      'GO:0004672'


 c1'=  % …
Run Code Online (Sandbox Code Playgroud)

performance matlab function call

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

如何在matlab中转换单元格数组

我有2个单元格函数(由某些代码产生)如下:

p = 
      'GO:0008150'
      'GO:0016740'
      'GO:0016787'
      'GO:0008150'
      'GO:0016740'
      'GO:0016740'
      'GO:0016787'
      'GO:0016787'
      'GO:0016787'
      'GO:0006810'
      'GO:0006412'
      'GO:0004672'
      'GO:0008150'
      'GO:0008150'
      'GO:0006810'
      'GO:0016192'
      'GO:0006810'
      'GO:0005215'

c = 
      'GO:0016740'
      'GO:0016787'
      'GO:0006810'
      'GO:0006412'
      'GO:0004672'
      'GO:0016779'
      'GO:0004386'
      'GO:0003774'
      'GO:0016298'
      'GO:0016192'
      'GO:0005215'
      'GO:0030533'
      'GO:0016787'
      'GO:0006810'
      'GO:0006412'
      'GO:0003774'
      'GO:0005215'
      'GO:0030533'
Run Code Online (Sandbox Code Playgroud)

我有一个代码,它可以正常使用单个值(数字或字符),但它不适用于上面的单元格,并出现以下错误消息:

??? Undefined function or method 'eq' for input arguments of type 'cell'.

如果有任何想法如何从单元格函数转换为任何类型,可以接受以下代码:

level1_root=setdiff(p,c) % to find the cells from p not in c
for i=1:length(p)
    a=[p(i),c(i)];
    if a(1,:)==level1_root
        level=a(2);
        level=[level a(2)]
    else
        end
end
Run Code Online (Sandbox Code Playgroud)

arrays matlab cells

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

我们可以在matlab程序中使用"dot"吗?

我想问一下是否有任何方法可以实现一个可以使用点分隔符生成ID的程序"." 例如:

a1.b2.c3 
Run Code Online (Sandbox Code Playgroud)

请注意,我不想将点作为一个字符处理,它应该像一个分隔符.

如果你在你的名字和你父亲的名字以及你祖父的名字之间加一个点,就像这样:

John.Paul.Hit
Run Code Online (Sandbox Code Playgroud)

matlab

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

标签 统计

matlab ×5

cells ×2

arrays ×1

call ×1

character ×1

function ×1

performance ×1