我无法在我的情节搞清楚如何显示4个变量。
我要改变独立变量X,V,生产出的因变量Y和Z. Y是X和V和Z的函数是Y和X的函数。
这可能是更容易看清的依赖关系:X,V,Y(X,V)中,Z(X,Y(X,V))。
我已经使用了冲浪功能绘制X,Y,Z,但我也想知道V,我不能确定目前的价值。
下面是一些测试数据来说明:
X = linspace(1,5,5)
V = linspace(1,5,5)
Capture = []
for j = 1:length(V)
Y = X.*V(j)
Capture = [Capture;Y]
end
[X,V] = meshgrid(X,V);
Z = Capture.*X
surf(X,Y,Z)
如果我使用的数据光标,我可以看到X,Y,Z值,但我也想知道五,我知道我有它设置的方式是正确的,因为如果我使两个地块的价值,说:
surf(X,Y,Z)
surf(X,V,Z)
然后使用数据光标移动到同一点X和Z的两个图表的值V和Y是他们应该是什么样的点(X,Z)。
反正是有显示的X,Y,V和Z值,而不需要生成两个单独的图形?
谢谢!
使用颜色作为你的第四维是一种可能性(不管它看起来不错,你是口味的问题)。
surf(X,Y,Z,V); #% 4th arg (V) is mapped onto the current colormap
您可以更改颜色映射到适合您的口味。
colorbar #% displays a colorbar legend showing the value-color mapping
编辑:提问者想看看到底该数据未示出的阵列中,而不仅仅是一种颜色。 这是自定义数据光标功能的作业。 下面,我该用纯粹的匿名函数实现的; 函数文件中这样做会有些简单。
#% Step 0: create a function to index into an array...
#% returned by 'get' all in one step
#% The find(ismember... bit is so it returns an empty matrix...
#% if the index is out of bounds (if/else statements don't work...
#% in anonymous functions)
getel = @(x,i) x(find(ismember(1:numel(x),i)));
#% Step 1: create a custom data cursor function that takes...
#% the additional matrix as a parameter
myfunc = @(obj,event_obj,data) {...
['X: ' num2str(getel(get(event_obj,'position'),1))],...
['Y: ' num2str(getel(get(event_obj,'position'),2))],...
['Z: ' num2str(getel(get(event_obj,'position'),3))],...
['V: ' num2str(getel(data,get(event_obj,'dataindex')))] };
#% Step 2: get a handle to the datacursormode object for the figure
dcm_obj = datacursormode(gcf);
#% Step 3: enable the object
set(dcm_obj,'enable','on')
#% Step 4: set the custom function as the updatefcn, and give it the extra...
#% data to be displayed
set(dcm_obj,'UpdateFcn',{myfunc,V})
现在,工具提示应显示额外的数据。 请注意,如果你改变在图中的数据,你需要重复Step 4
到新的数据传递到函数。