我有一个程序,它获取一个 fints 对象的列,将它们在所有组合中成对相乘,并将结果输出到一个新的 fints 对象中。我有数据的代码,但我也希望系列标签能够通过,以便 a 列和 b 列的乘积具有标签 a*b。
function tsB = MulTS(tsA)
anames = fieldnames(tsA,1)';
A = fts2mat(tsA);
[i,j] = meshgrid(1:size(A,2),1:size(A,2));
B = Mul(A(:,i(:)),A(:,j(:)));
q = [anames(:,i(:)); anames(:,j(:))];
bnames = strcat(q(1,:),'*', q(2,:));
tsB=fints(tsA.dates, B, bnames);
end
我在运行它时收到警告。
tsA= fints([1 2 3]', [[1 1 1]' [2 2 2]'],{'a','b'}');
MulTS(tsA)
??? Error using ==> fints.fints at 188
Illegal name(s) detected. Please check the name(s).
Error in ==> MulTS at 10
tsB=fints(tsA.dates, B, bnames);"
似乎 Matlab 不喜欢 bnames 的格式。我试过用谷歌搜索“将单元格数组转换为字符串 matlab”之类的东西,并尝试过 b = {bnames} 之类的东西。我究竟做错了什么?