function [x,y,z] = frequency_visualization(tick_x,tick_y,tick_z,x_n,y_n,V)
% 此程序是对立方体中存储轨迹数据的频数进行可视化
% meshgrid 生成三维网格
[x,y,z] = meshgrid(tick_x,tick_y,tick_z);
% % 三维体切片平面
% cube = slice(x,y,z,z,tick_x,tick_y,tick_z);
% 用cat函数读取一列
frequency = cat(1,V.points);
% 最大频数
max_frequency = max(frequency);
% 控制不同频数的小立方体的颜色变化
% 控制颜色变化的条应该是10份(几份除以几)
% unit = max_frequency/10;
% 调用str_split函数
all_digital = str_split(V);
%%%%%%%%%%%%%%%% 显示三维立方体部分代码
% 按z轴进行切片,因为z轴长度较短,容易切片
for i =1: length(tick_z)
% 打开一个新窗口
% figure;
% 字符串匹配
% temp_i = num2str(i);
% 索引
index = [];
% 检查此切面中的小立方体的频数,返回存储这些频数的索引index
for k = 1:length(all_digital)
if all_digital(k) ==i
index = [index k];
else
continue
end
end
% 取出这个切面中存储点的所有小立方体和其频数
segment = V(index);
% 将有频数的小立方体上色,频数越大越黑
% 创建矩阵
map = zeros(x_n-1,y_n-1);
for j = 1:length(segment)
% 将频数值存入相应的矩阵中
a = segment(j).shape;
b = strsplit(a,'*');
c = str2num(b{1,1});
d = str2num(b{1,2});
% 赋值
map(c,d) = segment(j).points;
end
% 归一化数值
nor_map = abs(log(map / max_frequency));
nor_map(nor_map == inf) =0;
[col,row] = size(nor_map);
temp_map = reshape(nor_map,[1,col * row]);
tmp_max = max(temp_map);
nor_map = nor_map / tmp_max;
nor_map = 1-nor_map;
% 将用数字表示颜色深浅的归一化二维矩阵nor_map显示到三维空间
%%%%%%%% 重要的显示部分
% nor_map = 1-nor_map;
%画出可视化数据
% matrixplot(nor_map,'XVarNames',XVarNames,'YVarNames',YVarNames,'DisplayOpt','off');
matrixplot(nor_map,'DisplayOpt','off');
colormap(gray(256))
% % 进行横切面操作
% xslice = [];
% yslice = [];
% zslice =tick_z(i) ;
% v = x.*exp(-x.^2-y.^2-z.^2);
% % 切割并显示
% slice(x,y,z,v,xslice,yslice,zslice);
% 等比设置
axis equal
% axis设置轴范围和纵横比,off为取消对坐标轴的一切设置,on为开启
axis off
% 需要修改
% 需要进行字符串设定
name = sprintf('%d.png',i);
% 按name的文件名保存当前窗口
saveas(gcf,name);
end
% % 显示,设置图形对象属性,FaceColor是面的颜色,Marker顶点用什么表示
% % set(cube,'FaceColor','none','Marker','o','MarkerFaceColor','y')
% set(cube,'FaceColor','none','Marker','none')
% % view视点的指定
% view(3)
end
上面是可视化的代码,其中需要调用两个函数str_split(此函数传入的参数是一个结构体)和matrixplot(传入的参数是数据矩阵)
function matrixplot(data,varargin)
% 根据实值矩阵绘制色块图,用丰富的颜色和形状形象的展示矩阵元素值的大小。
%
% matrixplot(data) 绘制矩阵色块图,data为实值矩阵,每一个元素对应一个色块,色
% 块颜色由元素值大小决定。
%
% matrixplot(data, 'PARAM1',val1, 'PARAM2',val2, ...)
% 用成对出现的参数名/参数值控制色块的各项属性。可用的参数名/参数值如下:
% 'FigShape' --- 设定色块的形状,其参数值为:
% 'Square' --- 方形(默认)
% 'Circle' --- 圆形
% 'Ellipse' --- 椭圆形
% 'Hexagon' --- 六边形
% 'Dial' --- 表盘形
%
% 'FigSize' --- 设定色块的大小,其参数值为:
% 'Full' --- 最大色块(默认)
% 'Auto' --- 根据矩阵元素值自动确定色块大小
%
% 'FigStyle' --- 设定矩阵图样式,其参数值为:
% 'Auto' --- 矩形矩阵图(默认)
% 'Tril' --- 下三角矩阵图
% 'Triu' --- 上三角矩阵图
%
% 'FillStyle' --- 设定色块填充样式,其参数值为:
% 'Fill' --- 填充色块内部(默认)
% 'NoFill' --- 不填充色块内部
%
% 'DisplayOpt' --- 设定是否在色块中显示矩阵元素值,其参数值为:
% 'On' --- 显示矩阵元素值(默认)
% 'Off' --- 不显示矩阵元素值
%
% 'TextColor' --- 设定文字的颜色,其参数值为:
% 表示单色的字符('