matlab生成三维断层数据及其标签 代码
时间: 2023-10-10 18:11:04 浏览: 73
以下是一个简单的Matlab代码示例,用于生成三维断层数据及其标签。这个例子使用了Matlab的内置函数来生成一个具有噪声的球体,并将其作为正样本,同时生成一个具有噪声的立方体,并将其作为负样本。这些样本被打上标签,其中球体为1,立方体为0。
```matlab
% 生成三维断层数据及其标签
% 生成一个球体和一个立方体作为样本,并打上标签
% 设置生成数据的参数
num_samples = 1000; % 样本数
noise_level = 0.05; % 噪声水平
% 生成球体作为正样本
radius = 0.5; % 球体半径
[X,Y,Z] = meshgrid(-1:0.05:1); % 生成网格
sphere = (X.^2 + Y.^2 + Z.^2) <= radius^2; % 生成球体
sphere = sphere + noise_level*randn(size(sphere)); % 添加噪声
sphere_samples = repmat(sphere(:), [1 num_samples/2]); % 扩展样本数
sphere_labels = ones(num_samples/2, 1); % 打上标签
% 生成立方体作为负样本
cube_size = round(radius*2/0.05); % 立方体大小
cube = rand(cube_size, cube_size, cube_size) < 0.5; % 生成立方体
cube = cube + noise_level*randn(size(cube)); % 添加噪声
cube_samples = repmat(cube(:), [1 num_samples/2]); % 扩展样本数
cube_labels = zeros(num_samples/2, 1); % 打上标签
% 合并样本和标签
samples = [sphere_samples, cube_samples];
labels = [sphere_labels; cube_labels];
% 随机打乱样本和标签的顺序
perm = randperm(num_samples);
samples = samples(:, perm);
labels = labels(perm);
% 显示一个样本
figure;
voxel = reshape(samples(:, 1), [cube_size, cube_size, cube_size]);
isosurface(voxel, 0.5);
axis equal;
```
这个例子生成了1000个样本,其中500个是球体,500个是立方体。可以通过修改代码中的参数来调整生成的样本数量和噪声水平。