从字符串调用矢量

时间:2015-12-06 17:19:31

标签: string matlab vector data-structures

我正在尝试编写一种算法,该算法选择特定的参考标准(矢量)作为温度的函数。温度值存储在结构(procspectra(i).temperature)中。我的参考标准存储在另一个结构(standards.interp.zeroed.ClOxxx)中,其中xxx是200,210,220等数字。我已经构建了舍入结构并将其粘贴到下面。

for i = 1:length(procspectra);
if mod(-procspectra(i).temperature,10) > mod(procspectra(i).temperature,10);
    %if mod(-) > mod(+) round down, else round up
    tempvector(i) = procspectra(i).temperature - mod(procspectra(i).temperature,10);
else
    tempvector(i) = procspectra(i).temperature + mod(-procspectra(i).temperature,10);
end
clostd =  strcat('standards.interp.zeroed.ClO',num2str(tempvector(i)));
end

这种结构效果很好。现在,我已经构建了一个与我想要调用的向量名称相同的字符串,但是我不确定如何实际调用向量,因为它被编码为字符串。理想情况下,我想在for循环中做一些事情,如:

parameters(i).standards.ClOstandard = clostd

其中我实际上将参数结构指定为与我之前生成的标准结构中保存的向量相同(而不仅仅是字符串)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

不要像那样构造clostd(包含完整的变量名),使其仅包含最后一个字段名称:

clostd = ['ClO' num2str(tempvector(i))];
parameters(i).standards.ClOstandard = standards.interp.zeroed.(clostd);

这是使用字符串动态访问结构字段的语法。所以以下三个是等价的:

struc.Cl0123
struc.('Cl0123')
fieldn='Cl0123'; struc.(fieldn)