我有32x32
矩阵LagsX
,其中包含我想要使用bar3
在3d中绘制的数据。我希望能够更改条形的颜色,以表示另一个名为32x32
的{{1}}矩阵中的数据。所以我实际上代表了4d数据。
我尝试访问了该栏的CrossCorrX
,我使用ZData
绘图并从bar3(LagsX)
替换ZData
。
但我收到了以下错误:
无效或删除对象。
这是我尝试使用的代码:
bar3(CrossCorX)
我收到了b1 = bar3(crossCorrX); colorbar
b = bar3(lagsX);
for k = 1:length(b)
b(k).CData = b1(k).ZData;
b(k).FaceColor = 'interp';
end
行中的错误。
你有建议怎么做吗?为什么会出现错误?
使用除b(k).CData = b1(k).ZData;
之外的其他功能的建议也将受到赞赏。
我正在使用MATLAB R2015a。
修改
我已经理解了我的问题,只需添加数字;再次。我的新问题是,无论LagsX == 0,表示CrossCorX的颜色都显示为零,即使它不同。有关如何克服这个问题的任何提示?
提前致谢!
答案 0 :(得分:0)
我认为错误正在发生,因为您使用第2个覆盖第1个绘图,因此无法再访问其ZData
属性。
为了解决这个问题,你可以简单地为每个bar3
情节分配一个图形,这应该有效。
随机数据示例:
clear
clc
close all
A = rand(10,10);
A2 = rand(10,10);
figure(1)
b1= bar3(A);
figure(2)
b = bar3(A2);
hcb = colorbar;
for k = 1:length(b)
b(k).CData = b1(k).ZData;
b(k).FaceColor = 'interp';
end
输出: