可能重复:
在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) 我有一个由某个代码产生的单元格数组如下:
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)
我需要删除包含零的行(例如:第一行应该被删除,因为我们在第一列中有一个零).那么如何从这个不包含零的数组创建一个数组呢?
我有一个带调用函数的代码,它给出了系统中每个基因的类型.我可以通过比较每个基因与其子女和父母的顺序来找到它.代码工作正常,有一小部分单元格阵列,但当我将数量增加到数千时,需要几个小时.代码是:
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) 我有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) 我想问一下是否有任何方法可以实现一个可以使用点分隔符生成ID的程序"." 例如:
a1.b2.c3
Run Code Online (Sandbox Code Playgroud)
请注意,我不想将点作为一个字符处理,它应该像一个分隔符.
如果你在你的名字和你父亲的名字以及你祖父的名字之间加一个点,就像这样:
John.Paul.Hit
Run Code Online (Sandbox Code Playgroud)