scatterを使ってX-Y平面図上でX、Yの位置を指定し、その指定した位置に、強度を表す数値を色で表したいのですが・・・
Show older comments
scatterを使ってX-Y平面図上でX、Yの位置を指定し、その指定した位置に、強度を表す数値を色で表したいのですが、エクセルデータをうまく出力してくれません。
持っているデータはX位置におけるY位置で、X座標に対して、Y座標が細かくずれていきます。
イメージはXが0.1mmの時、Yが0.001mm刻み(実際にはYは関数ではなく、測定値で、刻み幅がバラバラの数値になります)に変化していき、
そのXとYの指定した座標位置にXとYの座標に全く関係ない、別途で計算した、強度の値を色の変化する点で示したいのです。
三つの引数があり、二次元の図面で表したいのでscatterが良いのかなとおもってやってみるのですが、
エクセルデータをうまく読み込んでくれません。
データ入院してついては
Xは7500行 1列
Yは7500行 100列
kyoudoは7500行 100列 のデータになっていてdoubleにして入力しています。
scatter(X,Y,kyoudo,filled)
を入れると、コメントで
XとYは同じベクトルの長さでなくてはなりません と表示されます。
自分は初心者でどうしたら良いかわからず、困っています。解決方法の検討がつく方がいれば、ぜひ助けてほしいです。
また、できることのら、scatteredInterpolantやimagescでも同じエクセルファイルを用いて出力できるようなりたいです。
別の方法でも大丈夫なので、なにか良い手法を教えていただくことはできませんか。
よろしくお願いいたします。
Accepted Answer
More Answers (2)
Kazuya
on 22 Aug 2019
「scatter」と「強度を表す数値を色で表したい」がうまくイメージできないんですが、、
scatter(x,y,sz)
の構文ということは、、各xy座標において、強度に応じた色の点を描く感じでしょうか。それであば
X100 = repmat(X, 1, 100);
scatter(X100(:),Y(:),kyoudo(:),'filled')
でとりあえず何かしら描けるかと思いますが、強度を色の関係はどうしましょう。。
ちなみに X100 は X を横方向に 100 回コピーした行列で 7500 x 100 になっていて、Yと同じサイズになっているはず。
そして X100(:) や Y(:) は行列をベクトル(1列)のデータとして取り扱うコマンドです。X100, Y, kyoudo をそれぞれ1列のベクトルとして scatter 関数に入れています。
以下で確認してみてください。
X = [1,2,3; 4,5,6; 7,8,9]
X(:)
X =
1 2 3
4 5 6
7 8 9
ans =
1
4
7
2
5
8
3
6
9
もし他に以下から想像されているのと近いものがあれば教えてくださいませ。
Takeru Katagiri
on 22 Aug 2019
0 votes
4 Comments
Kazuya
on 22 Aug 2019
そういう図でしたか。確かに少しややこしいですね。
是非挑戦してみたいので適当なサンプルデータ貰えませんでしょうか?(そのデータをもとにコードを書けば、そのまま使えますし。)
Takeru Katagiri
on 23 Aug 2019
Takeru Katagiri
on 23 Aug 2019
データありがとうございます。いくつか試してみたので別に回答として投稿しますね。
MATLABをどうやって勉強するか・・は難しい質問ですね。既に実施されているように経験を通して知識が増えていったというのは私も同じでして。。
こんな質問もあります。
他の人の質問に答えるというのは時間は掛かりますがいい練習になります。
Categories
Find more on 表面プロットとメッシュ プロット in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!