私はMatlabで3Dヘリカルフラックスチューブをアニメーション化することを任されていましたが、その方法はわかりません。サーフプロットをアニメ化する
私が持っていた唯一のアニメーション体験は、9つの太陽系惑星軌道の2d軌道をプロットすることでした。私は以下のコードを使用しました(ここで、zは列x、y次のように、だから9つの惑星を表すために9回としてZ)
% Plot 9 empty plots
p = plot3(nan(9), nan(9), nan(9));
for k = 1:size(z, 1)
% Update all of the plot objects at once
set(p, {'XData'}, num2cell(z(1:k, 1:3:25), 1).', ...
{'YData'}, num2cell(z(1:k, 2:3:26), 1).', ...
{'ZData'}, num2cell(z(1:k, 3:3:27), 1).')
drawnow
end
は、直感的に、私が持っている螺旋状の磁束管のためにこれを適応させることを試みた(ここで、x、yおよびzは21 X 301行列であり、だから私は、各時間ステップで、必要な時間ステップまでx、y、zの行をサーフする必要があると仮定します)。
p = surf(nan(21,301), nan(21,301), nan(21,301));
for k = 1:size(x,1)
% Update all of the plot objects at once
set(p, {'XData'}, num2cell(x(1:k, :), [1 301]), ...
{'YData'}, num2cell(y(1:k, :), [1 301]), ...
{'ZData'}, num2cell(z(1:k, :), [1 301]))
drawnow
end
しかし、私はエラー
Error using matlab.graphics.chart.primitive.Surface/set
Size mismatch in Param Cell/Value Cell pair.
私はおそらくどこかの愚かなミスを犯しましたが、誰もが助けることができる知っているを得続けるこれをやって?あるいは、私がこのことについて完全に行っていれば、誰かが私に知らせることができますか?それが助け場合
は(NB、螺旋状のフラックスチューブをプロットする元のスクリプトでは、コードが
surf(x,y,z,'facecolor', Colour, 'edgecolor',EdgeColour,...
'facelighting','gouraud')
:)感謝です!
申し訳ありませんが、フラックスチューブが時間の経過と共に成長していることを示すアニメーションが表示されているため、表面(基点)からの浮き上がりを示します –
上記のことを実行すると、 pは定義されていません –
申し訳ありませんが、私はatmにいるコンピュータにmatlabを持っていませんので、私はテストを行うことはできません、これをもう一度試してください...あなたは後で変数名を追加することができます(この質問はアニメーションの詳細です) – KiW