问题:
对如下数据,做出截面图,并按相应的颜色值设置数据;
x y z s
1 2 2 25
1 3 3 21
1 4 4 20
2 5 5 19
2 6 7 31
这样一组s与x,y,z没有直接函数表达式关系的数据希望能够用slice函数绘出切面图,也就是说,在x=1这个切面上,应该有对应s=25 21 20这三种用颜色表示的函数值。
首先,看到slice命令的帮助文件中有个例子:
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];
slice(x,y,z,v,xslice,yslice,zslice)
colormap hsv
这里的slice前三个参数,必须构成网格数据,如图:
通过:
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
figure;
view(3);
hold on;
for i = 1 : size(x, 1)
for j = 1 : size(x, 2)
for k = 1 : size(x, 3)
plot3(x(i, j, k), y(i, j, k), z(i, j, k), '.');
end
end
end
这些点构成了网格数据
所以,我们需要制造网格数据,进行截面操作;
close all;
clc;
clear;
A = [1 2 2 25
1 3 3 21
1 4 4 20
2 5 5 19
2 6 7 31];
x = A(:, 1)';
y = A(:, 2)';
z = A(:, 3)';
s = A(:, 4)';
% 提取有效数据
xb = min(x);
xe = max(x);
yb = min(y);
ye = max(y);
zb = min(z);
ze = max(z);
sb = min(s);
se = max(s);
x1 = linspace(xb, xe, 30);
y1 = linspace(yb, ye, 30);
z1 = linspace(zb, ze, 30);
s0 = linspace(sb, se, 30);
% 对有效数据分割
[x1 y1 z1] = meshgrid(x1, y1, z1);
% 生成网格数据点
s1 = zeros(size(x1, 1), size(x1, 2));
for i = 1 : size(s1, 1)
s1(i, :) = s0;
end
st = zeros(size(x1, 1), size(x1, 2), size(x1, 3));
for i = 1 : size(st, 3)
st(:, :, i) = s1;
end
s1 = st;
% 构造第四维数据s1
figure;
hold on;
view(3);
slice(x1, y1, z1, s1, x, [], []);
这样就做出来所谓的截面图
这个是通过slice(x1, y1, z1, s1, x, y, []);来做的,但没有颜色值设置选项;
close all;
clc;
clear;
A = [1 2 2 25
1 3 3 21
1 4 4 20
2 5 5 19
2 6 7 31];
x = A(:, 1)';
y = A(:, 2)';
z = A(:, 3)';
s = A(:, 4)';
% 对有效数据分割
xb = min(x);
xe = max(x);
yb = min(y);
ye = max(y);
zb = min(z);
ze = max(z);
y1 = linspace(yb, ye, 30);
z1 = linspace(zb, ze, 30);
x1 = ones(size(y1, 1), size(y1, 2)) * x(1);
[x1, y1] = meshgrid(x1, y1);
z = zeros(length(z1));
for i = 1 : size(z, 1)
z(i, :) = z1;
end
surf(x1, y1, z);
% 这个时候产生了对应于x1的网格截面图,下面来定颜色
[a, b] = size(z);
rgb = ones(a, b);
len = length(s)+1;
slic = floor(linspace(1, a, len));
for i = 1 : length(slic)-1
rgb(slic(i):slic(i+1)-1, :) = rgb(slic(i):slic(i+1)-1, :)*s(i);
end
% 产生颜色值
figure;
surf(x1, y1, z, rgb);
这个是设置了颜色的图
附件中是附图的文档,如果m币足够,可以下载来看看。
[本帖最后由 mooni 于 2009-6-16 14:56 编辑]