我有一个单元格的矢量(比如,50x1
的大小,称为tokens
),每个都是一个结构,其属性为x
,f1
,{{ 1}}是表示数字的字符串。例如,f2
给出:
tokens{15}
我试图将这些数字放入3个向量(每个也是x: "-1.4343429"
f1: "15.7947111"
f2: "-5.8196158"
),其类型为50x1
。所以我创建了3个向量:
float
并且工作正常(为什么不呢?)。但是当我尝试填充这些向量时:(x = zeros(50,1,'single');
f1 = zeros(50,1,'single');
f2 = zeros(50,1,'single');
是L
循环索引)
for
我明白了:
从字符串转换为单个时发生以下错误: 无法从字符串转换为单个字符串。
我能理解;隐式转换不适用于x(L)=tokens{L}.x;
.. also for the other 2
。如果single
,x
和f1
的类型为f2
,则会有效。
我使用浮点数的原因是因为我得到的数据来自一个C程序,它将一些浮点数写入一个文件以供matlab读取。如果我尝试将值转换为C程序中的双精度值,我会得到四舍五入的错误......
所以,(在我希望是一个好问题之后),我怎样才能以正确的精度获取这些字符串中的数字?(所有字符串都具有相同的数字小数位:7)。
MCVE:
50x1 double
答案 0 :(得分:2)
在分配到您的数组之前使用函数str2double
(如果需要,然后将其转换为单个)。在将字符串(字符数组)用作数字之前,它们必须明确地转换为数字。