2次元座標でスプライン補間した結果を3次元座標で表現することは可能でしょうか?
24 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
二次元(xy座標)の離散データをsplineで補間した際
その結果を”Z=0の補完したデータ”として扱い、他のデータをZ=1の場合…、また他のデータをZ=2の場合…、といった風に複数の補間した曲線を三次元(xyz座標)で表現することは可能でしょうか?また、x軸方向からも行い(y軸を縦方向と考えた場合)、メッシュ状に表現することは可能でしょうか?
x = [-2 -1.5 -1 -0.5 0 0.5 1 1.5 2];
y = [1.83 10.5 36.7 77.8 100 77.8 36.7 10.5 1.83];
cs = spline(x,[0 y 0]);
xx = linspace(-2,2,101);
plot(x,y,'o',xx,ppval(cs,xx),'-');
これだと二次元で表示されるので、それをZ=0などの数値を与えて三次元的に表現できないでしょうか
教えていただけると幸いです。
2 comentarios
Hernia Baby
el 11 de Oct. de 2022
> ”Z=0の補完したデータ”として扱い、他のデータをZ=1の場合…、また他のデータをZ=2の場合…、
ここの詳細教えてください。
x(:,ii) = [-2 -1.5 -1 -0.5 0 0.5 1 1.5 2]';
y(:,ii) = [1.83 10.5 36.7 77.8 100 77.8 36.7 10.5 1.83]';
cs = spline(x,[0 y 0]);
xx = linspace(-2,2,101);
z(:,ii) = ppval(cs,xx);
そうすると x と y は行列になりますが、これらはベクトルでしょうか?
Respuesta aceptada
克仁
el 8 de Nov. de 2022
Editada: 克仁
el 8 de Nov. de 2022
2 comentarios
Hernia Baby
el 8 de Nov. de 2022
すみません、回答できてませんでしたね…
cell型を利用すればコンパクトに行えます
データを作成します
x = [-2 -1 0 1 2];
xx = -2:.25:2;
y{1} = [0.03 0.67 1.83 0.67 0.03];
y{2} = [0.67 13.53 36.78 13.53 0.67];
y{3} = [1.83 36.78 100 36.78 1.83];
y{4} = [0.67 13.53 36.78 13.53 0.67];
y{5} = [0.03 0.67 1.83 0.67 0.03];
yを補間します
yy = cellfun(@(Y) spline(x,Y,xx),y,'UniformOutput',false);
データをまとめます
x1 = xx;
y1 = num2cell((-2:2)'.*ones(1,17), 2);
z1 = yy';
図示します。
figure
hold on
cellfun(@(Y,Z) plot3(x1,Y,Z,'-',...
'Color','b','MarkerSize',10,...
'MarkerFaceColor','#D9FFFF'),y1,z1,'UniformOutput',false);
hold off
view(3)
Hernia Baby
el 8 de Nov. de 2022
[X,Y] = meshgrid(-2:2);
Z = [0.03 0.67 1.83 0.67 0.03
0.67 13.53 36.78 13.53 0.67
1.83 36.78 100 36.78 1.83
0.67 13.53 36.78 13.53 0.67
0.03 0.67 1.83 0.67 0.03];
xだけ細かくします
[X1,Y1] = meshgrid(-2:.25:2,-2:2);
補間します
Z1 = interp2(X,Y,Z,X1,Y1,'spline');
図示します
figure
hold on
for ii = 1:height(X1)
plot3(X1(ii,:),Y1(ii,:),Z1(ii,:) ...
,'-','Color','b','MarkerSize',10 ...
,'MarkerFaceColor','#D9FFFF')
end
hold off
view(3)
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

