我正在使用Jim Ramsay's FDA package for MATLAB对我通过实验获得的数据进行功能分析。我正在为我的功能数据对象设置标签,生成它,并使用以下代码绘制它:
% Set up labels
fdnames = cell(1,3);
fdnames{1} = 'Time (ms)';
cnd = cell(1,2);
cnd{1} = 'Condition';
cnd{2} = ['C1'; 'C2'; 'C3'];
fdnames{2} = cnd;
fdnames{3} = 'Values';
% Generate functional data object from
% arguments (t), data (y), basis object (bss),
% default value for derivative order (4), lambda (0.1),
% and labels (fdnames)
fdObj = data2fd(t, y, bss, 4, 0.1, fdnames);
% Plot
plot_fit(y, t, fdObj);
这会产生3个图。所有这三个标签中都有'C1',而不是'C1','C2'和'C3',它们是我在功能对象中对案例/复制的标签。
我想绘制我的功能对象,并在图上显示正确的标签。欢迎来自经验丰富的MATLAB和FDA用户的任何帮助。
答案 0 :(得分:0)
这是由于FDA包中的plot_fit
功能存在错误。以下是该功能代码的一部分:
% ...
casenames = fdnames{2};
% ...
% plot the results
if residual
% plot the residuals
ylimit = [min(min(min(res))), max(max(max(res)))];
for i = 1:nrep
for j = 1:nvar
% ...
if nrep > 1
if iscell(casenames)
title(['\fontsize{12} ', casenames{2}(j,:), ...
' RMS residual = ',num2str(sqrt(MSE(j,i)))])
else
title(['\fontsize{12} Case ', num2str(i), ...
' RMS residual = ',num2str(sqrt(MSE(j,i)))])
end
else
% ...
end
end
pause
end
else
% plot the data and fit
% ...
for i = 1:nrep
for j = 1:nvar
% ...
if nrep > 1
if iscell(casenames)
title(['\fontsize{12} ', casenames{2}(j,:), ...
' RMS residual = ',num2str(sqrt(MSE(j,i)))])
else
title(['\fontsize{12} Case ', num2str(i), ...
' RMS residual = ',num2str(sqrt(MSE(j,i)))])
end
% ...
这里,变量i
和j
分别遍历案例/代表和变量,行
title(['\fontsize{12} ', casenames{2}(j,:), ...
使用j
作为参数来选择将在标题中显示的案例/代表名称。更新包以用
title(['\fontsize{12} ', casenames{2}(i,:), ...
可以解决问题。