Matlab 将循环字符串转换为整数

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

我一直在努力寻找一种使用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_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
作为数字向量。不过我确实有点搞砸了。我不知道该怎么做