Solidworks​(ソリッドワークス)​の解析結果のような図​を作製したいです。

8 views (last 30 days)
Takeru Katagiri
Takeru Katagiri on 24 Aug 2019
Commented: Yoshio on 26 Aug 2019
上のURLの中盤で出てくる、片持ちはりの解析結果のような図面をMATLABで作製したいです。
作製したい図面は二次元で、X-Y平面図上でX、Yの位置を指定し、その指定した位置に、強度を表す数値を色で表したいです。
持っているデータはX位置におけるY位置と、その座標系に一致した強度(kyoudo)を表す数値の二つのエクセルデータです。
Xは7500行 1列
Yは7500行 100列
kyoudoは7500行 100列です。
kyoudoにはマイナスの値も含みます。
よろしくお願いします。
なにか良い手法を教えていただくことはできませんか。
よろしくお願いいたします。

Accepted Answer

Yoshio
Yoshio on 25 Aug 2019
Edited: Yoshio on 25 Aug 2019
Kazuyaさんコメントありがとうございます。Kazuyさんの例とデータを参考にして少し変更してみました。
surf(X,Y,Z)は、点(Xi, Yi)におけるZi値を3次元空間の高さとして色付けした3次元図形をプロットします。これを2次元に投影(上から見た図に)するため、view([0 90])を使いました。
結果は殆ど同じ様です。Kazuyaさんのやれた方法(三角形分割、パッチで色付け)が、surfの内部で行われいるやり方かと想像します。
load data_small
col = size(Y,2);
XX = repmat(X, 1, col);
surf(XX,Y,Strength,'EdgeColor','none','FaceColor','interp')
view([0 90])
  4 Comments
Takeru Katagiri
Takeru Katagiri on 26 Aug 2019
Yoshioさん
はじめにやってみたとき、真っ黒のグラフになったのはエッジカラーの黒色が原因だったのですね。
自分でプログラミングを理解して初めてその原因に気づけました。
実際にプログラムの解を知ってしまうとこんなに単純にできてしまうのかとMATLABのすごさいを実感しております。
もし伺えたら教えていただきたいのですが、
自分の今回のデータはX-Y座標における強度を示す値の3つの値を引っ張てきましたが、X-Y-Zの三次元で強度を測定したデータがある場合の4つの値を三次元のグラフで表すときもsurfは有効でしょうか?
用途としては三次元のグラフを作って、あるいはデータだけを読み見込ませて、指定した座標位置の強度分布を見れるようにしたいです(Yが○○のときのXZ平面の強度分布が見たい といった感じです)
もし良ければご意見をいただけると助かります。よろしくお願いします。
Yoshio
Yoshio on 26 Aug 2019
こちらが参考になるかと思います。
sliceの例としては、こちらもご参照ください。

Sign in to comment.

More Answers (2)

Yoshio
Yoshio on 24 Aug 2019
Edited: Yoshio on 24 Aug 2019
以前のご質問に対するKazuyaさんの解答とほぼ同じですが、
X100 = repmat(X, 1, 100);
surf(X100,Y,kyoudo)
view([0 90])
を試してみてください。surfのマニュアルはこちらです。

Kazuya
Kazuya on 24 Aug 2019
こちらに試しにやってみた例を投稿しました。

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!