Matlab 将循环字符串转换为整数
我一直在努力寻找一种使用MATLAB将字符串从.txt文件转换为整数的方法 下面是我的文件的示例:Matlab 将循环字符串转换为整数,matlab,for-loop,Matlab,For Loop,我一直在努力寻找一种使用MATLAB将字符串从.txt文件转换为整数的方法 下面是我的文件的示例: genes total_muts A2M 1 AARS 4 AASS 6 ABCA1 105 ABCA3 71 ABCA4 563 下面是我正在使用的脚本: genes_disease = dataset('file', 'genes_totalshuffle.txt', 'Delimiter', '\t'); gene = genes_dise
genes total_muts
A2M 1
AARS 4
AASS 6
ABCA1 105
ABCA3 71
ABCA4 563
下面是我正在使用的脚本:
genes_disease = dataset('file', 'genes_totalshuffle.txt', 'Delimiter', '\t');
gene = genes_disease.genes
total_muts = genes_disease.total_muts
a = 0
fileID = fopen('genes_totalshuffled.txt', 'w')
for k = 1:length(genes_disease)
total_muts1 = total_muts(k);
num_total_muts = str2num(total_muts1)
r = randi([a num_total_muts],1);
fprint(fileID, '%4f %4f\n', num_total_muts, r)
end
fclose(fileID)
当我运行这个脚本时,我得到一个错误,通知我,
randn
的大小输入需要是数字。我认为我的问题在于totalmuts
变量。此变量打印字符串而不是整数。我想我可以使用str2num(),但我似乎无法让它正常工作。有什么建议吗
*编辑:包括我如何尝试使用str2num。此外,我正在尝试生成一个随机生成的数字,该数字介于0和文件中列出的值之间 您可以使用生成一个介于0
和totalmuts
之间的数字
r = randi([0 totalmuts]);
我必须将输入数据更改为CSV
genes,total_muts
A2M,1
AARS,4
AASS,6
ABCA1,105
ABCA3,71
ABCA4,563
然后将代码转换为
genes_disease = dataset('file', 'genes_totalshuffle.txt', 'Delimiter', ',');
gene = genes_disease.genes
total_muts = genes_disease.total_muts
a = 0
fileID = fopen('genes_totalshuffled.txt', 'w')
for k = 1:length(genes_disease)
totalmuts = total_muts(k);
genename = gene(k);
r = randi([a totalmuts]);
fprintf(fileID, '%4f %4f\n', totalmuts, r) % consider %d or %3d
end
fclose(fileID)
对我来说,输出效果很好
1.000000 1.000000
4.000000 0.000000
6.000000 3.000000
105.000000 47.000000
71.000000 46.000000
563.000000 400.000000
您可以使用生成一个介于0
和totalmuts
之间的数字
r = randi([0 totalmuts]);
我必须将输入数据更改为CSV
genes,total_muts
A2M,1
AARS,4
AASS,6
ABCA1,105
ABCA3,71
ABCA4,563
然后将代码转换为
genes_disease = dataset('file', 'genes_totalshuffle.txt', 'Delimiter', ',');
gene = genes_disease.genes
total_muts = genes_disease.total_muts
a = 0
fileID = fopen('genes_totalshuffled.txt', 'w')
for k = 1:length(genes_disease)
totalmuts = total_muts(k);
genename = gene(k);
r = randi([a totalmuts]);
fprintf(fileID, '%4f %4f\n', totalmuts, r) % consider %d or %3d
end
fclose(fileID)
对我来说,输出效果很好
1.000000 1.000000
4.000000 0.000000
6.000000 3.000000
105.000000 47.000000
71.000000 46.000000
563.000000 400.000000
您可以使用生成一个介于0
和totalmuts
之间的数字
r = randi([0 totalmuts]);
我必须将输入数据更改为CSV
genes,total_muts
A2M,1
AARS,4
AASS,6
ABCA1,105
ABCA3,71
ABCA4,563
然后将代码转换为
genes_disease = dataset('file', 'genes_totalshuffle.txt', 'Delimiter', ',');
gene = genes_disease.genes
total_muts = genes_disease.total_muts
a = 0
fileID = fopen('genes_totalshuffled.txt', 'w')
for k = 1:length(genes_disease)
totalmuts = total_muts(k);
genename = gene(k);
r = randi([a totalmuts]);
fprintf(fileID, '%4f %4f\n', totalmuts, r) % consider %d or %3d
end
fclose(fileID)
对我来说,输出效果很好
1.000000 1.000000
4.000000 0.000000
6.000000 3.000000
105.000000 47.000000
71.000000 46.000000
563.000000 400.000000
您可以使用生成一个介于0
和totalmuts
之间的数字
r = randi([0 totalmuts]);
我必须将输入数据更改为CSV
genes,total_muts
A2M,1
AARS,4
AASS,6
ABCA1,105
ABCA3,71
ABCA4,563
然后将代码转换为
genes_disease = dataset('file', 'genes_totalshuffle.txt', 'Delimiter', ',');
gene = genes_disease.genes
total_muts = genes_disease.total_muts
a = 0
fileID = fopen('genes_totalshuffled.txt', 'w')
for k = 1:length(genes_disease)
totalmuts = total_muts(k);
genename = gene(k);
r = randi([a totalmuts]);
fprintf(fileID, '%4f %4f\n', totalmuts, r) % consider %d or %3d
end
fclose(fileID)
对我来说,输出效果很好
1.000000 1.000000
4.000000 0.000000
6.000000 3.000000
105.000000 47.000000
71.000000 46.000000
563.000000 400.000000
你的问题中有几点我不明白。切中要害:如果变量
var
等于字符串'1'
(是吗??),则可以使用num2str(var)
将其转换为整数。而且赋值(k:k)没有用,只需使用(k)。“我想我可以使用str2num()
,但我似乎无法使其正常工作。”-请添加您尝试使用此文件的代码。两个文件名不匹配。。。还是故意的?一个是输入,另一个是输入?@Dan我故意将“Matlab”编辑为“Matlab”,因为这是官方产品名称。你的问题中有几点我不明白。切中要害:如果变量var
等于字符串'1'
(是吗??),则可以使用num2str(var)
将其转换为整数。而且赋值(k:k)没有用,只需使用(k)。“我想我可以使用str2num()
,但我似乎无法使其正常工作。”-请添加您尝试使用此文件的代码。两个文件名不匹配。。。还是故意的?一个是输入,另一个是输入?@Dan我故意将“Matlab”编辑为“Matlab”,因为这是官方产品名称。你的问题中有几点我不明白。切中要害:如果变量var
等于字符串'1'
(是吗??),则可以使用num2str(var)
将其转换为整数。而且赋值(k:k)没有用,只需使用(k)。“我想我可以使用str2num()
,但我似乎无法使其正常工作。”-请添加您尝试使用此文件的代码。两个文件名不匹配。。。还是故意的?一个是输入,另一个是输入?@Dan我故意将“Matlab”编辑为“Matlab”,因为这是官方产品名称。你的问题中有几点我不明白。切中要害:如果变量var
等于字符串'1'
(是吗??),则可以使用num2str(var)
将其转换为整数。而且赋值(k:k)没有用,只需使用(k)。“我想我可以使用str2num()
,但我似乎无法使其正常工作。”-请添加您尝试使用此文件的代码。两个文件名不匹配。。。还是故意的?一个是输入,另一个是输入?@Dan我故意将“Matlab”编辑为“Matlab”,因为这是官方产品名称。rand(1)
在这种情况下是多余的。只需自己调用rand
。但是,OP需要一个整数,所以使用randi
。啊,原来的语法是有意义的randi([0 totalmuts],1)
@Steve,是的!!然而,当我尝试使用它时,我得到一个错误:“大小和输入必须是数字”。我不知道如何解决这个问题。我的MATLAB版本给出了total_muts
作为数字向量。不过我确实有点搞砸了。我无法将\t
作为分隔符,必须将其更改为,“
,并将数据文件更改为带有逗号,但它起到了作用then@Steve我会将我的文件转换为CSV,然后我会让你知道它是否有效。谢谢!:)<代码>兰德(1)在这种情况下是多余的。只需自己调用rand
。但是,OP需要一个整数,所以使用randi
。啊,原来的语法是有意义的randi([0 totalmuts],1)
@Steve,是的!!然而,当我尝试使用它时,我得到一个错误:“大小和输入必须是数字”。我不知道如何解决这个问题。我的MATLAB版本给出了total_muts
作为数字向量。不过我确实有点搞砸了。我无法将\t
作为分隔符,必须将其更改为,“
,并将数据文件更改为带有逗号,但它起到了作用then@Steve我会将我的文件转换为CSV,然后我会让你知道它是否有效。谢谢!:)<代码>兰德(1)在这种情况下是多余的。只需自己调用rand
。但是,OP需要一个整数,所以使用randi
。啊,原来的语法是有意义的randi([0 totalmuts],1)
@Steve,是的!!然而,当我尝试使用它时,我得到一个错误:“大小和输入必须是数字”。我不知道如何解决这个问题。我的MATLAB版本给出了total_muts
作为数字向量。不过我确实有点搞砸了。我不知道该怎么做