こんにちは、Matlabを使い始めのものです。
二行の行列(2x10とか2x40など)にについて、一行目をx座標、二行目をy座標としてグラフ化したいのですが、うまくいきません。
自動的にx座標は列の番号となり、二つのグラフが現れてしまいます:y座標に一行目、二行目、両方がプロットされてしまいます。どうにか、一行目をx、二行目をy座標としてグラフ化できないでしょうか。おそらく、とても単純なことなのかもしれないのですが、どうしてもわからず、とても歯がゆい思いをしています・・・。どうかご教示ください。

何をしたいかといいますと、音声データをMatlabで取り込んだのですが、振幅データがずらっと並んだ、1x500000とかの行列が得られます。
これを、プロットすると、x軸はサンプル番号が並ぶわけですが、本当はx軸は時間であって欲しいため、音声データの行列にひとつ行を足して、時間軸を作ってあげました。つまり、今手元にあるのは、2x500000の行列で、一行目が時間、二行目が振幅となっています。これをx軸が時間軸、でy軸が振幅となるようにグラフ化してあげたいと考えています。

文章がわかり辛くて申し訳ないのですが、何卒よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

xを2行×N列のマトリクスとして、



figure(1)
plot(x(1,:),x(2,:))
hold on

か分かりやすく、
figure(1)
u=x(1,:);
v=x(2,:);
plot(u,v)
hold on

でいいかと。
    • good
    • 1
この回答へのお礼

できました! ところで、x(1,:)ではなく、x(:,1)では
ないでしょうか。

有難う御座いました!!!

お礼日時:2009/05/18 15:22

よかったですね。



>できました! ところで、x(1,:)ではなく、x(:,1)ではないでしょうか。

2行×N列の場合x(1,:)です。x(:,1)は2行×1列の行列です。もし後者でグラフ表示が正しければ、元行列サイズはN×2だと思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q種類の異なるグラフを同時に表示

うまく伝わるかどうか自信がありませんが、質問です。

エクセルでグラフを作成する際に、種類の異なるグラフを同時に
表示させたいのです。具体的には、
「集合縦棒」「積み上げ縦棒」「折れ線グラフ」
この3種類を表示させたいのです。

2Dと3Dのグラフは同時に表示させることはできないようですが、
この場合は違いますよね。
最初に普通の「集合縦棒」でグラフを作っておいて、あとから「データの追加」で
積み上げ縦棒を作ろうとすると、さっき作った集合縦棒の分までが
一緒に「積み上げ縦棒」として表示されてしまいます。

また、最初にグラフを作成する際に、グラフウィザードから「ユーザー設定」タブを
選択し、その中にある「2軸上の折れ線と縦棒」を選択し、ここでひとまず
普通の縦棒(集合縦棒)と折れ線グラフを同時に表示できますが、ここに
新たに積み上げ縦棒を追加しようと思うと、縦棒グラフが積み上げ縦棒に
なってしまいます。

そもそも、私が考えているのは不可能なことなんでしょうか?
それとも何か手段があるのでしょうか?

よろしくお願い致します。

うまく伝わるかどうか自信がありませんが、質問です。

エクセルでグラフを作成する際に、種類の異なるグラフを同時に
表示させたいのです。具体的には、
「集合縦棒」「積み上げ縦棒」「折れ線グラフ」
この3種類を表示させたいのです。

2Dと3Dのグラフは同時に表示させることはできないようですが、
この場合は違いますよね。
最初に普通の「集合縦棒」でグラフを作っておいて、あとから「データの追加」で
積み上げ縦棒を作ろうとすると、さっき作った集合縦棒の分までが
一緒に「積み上げ縦棒...続きを読む

Aベストアンサー

「棒グラフ」と「折れ線グラフ」は、種類が違うので
同時に表示できますが、
「集合縦棒」と「積み上げ縦棒」は形式が違っても
種類は同じなので、同時には表示できないのでは?

Qx-y座標に10個ぐらいの点をプロットしたい。

エクセルのシートに
xy
19.76 4.81
27.24 3.47
36.99 1.94
46.19 3.04
56.35 1.82
68.54 4.18
76.53 4.18
87.35 2.44
97.75 3.80

というデータがあるのですが、
これをx-y座標にグラフ化したいのですが、どうしたらいいのかわかりません。エクセルでもできますか?
できなければ何かフリーソフトでもありますか?
急いでますのでよろしくお願いします。

Aベストアンサー

1というのは(9.76,4.81)という点に対するラベルと考えて良いでしょうか?
もしそうならxの値=9.76 yの値=4.81としてグラフ化してください。
いったんグラフができたらグラフを選択したままメニューのグラフ-元のデータを
選びます。
このとき最初の設定ではデータの範囲というタブが選択されているはずです。
そうしたらそこの選択範囲を一度クリアーしてから系列タブを選択してください。
「追加」を選ぶと一点づつx、y、名前が入力できます。このとき各入力ボックスに
フォーカスを移しておかないと受け付けませんのでご注意ください。
このときデータ系列名に1を選択するとグラフの右側に凡例としてシンボルと系列名が表示されます。
全ての点の形や色を変えるには10点を全て別の系列にしてください。
つまり一系列一ポイントのデータを10個重ね書きするのです。
なお普通の折れ線グラフのように各ポイントに自動的にラベルをつけるのは
できないかも知れません(やったことが無いので)
無理にやるならグラフとは無関係にテキストボックスを貼り付けることもできます。

1というのは(9.76,4.81)という点に対するラベルと考えて良いでしょうか?
もしそうならxの値=9.76 yの値=4.81としてグラフ化してください。
いったんグラフができたらグラフを選択したままメニューのグラフ-元のデータを
選びます。
このとき最初の設定ではデータの範囲というタブが選択されているはずです。
そうしたらそこの選択範囲を一度クリアーしてから系列タブを選択してください。
「追加」を選ぶと一点づつx、y、名前が入力できます。このとき各入力ボックスに
フォーカスを移しておかないと...続きを読む

QExcelグラフ応用・・・数値軸を5種類にしたい場合

また、質問です。
Excel2000で、OSもWin2000です。
Excelのグラフですが、数値軸を5種類にしたい場合はどうやってグラフを作成すれば宜しいでしょうか?また、作成後に編集する場合の方法も教えてください。

Aベストアンサー

> レーダーグラフとは、Excelで作成可能のものなのか

こちらはExcel2000ですが作成できます。
書かせていただいた通りのレイアウトですと
A1から

大きさ
サイズ
階級
長さ
のようになっていて、B列に数値が入っているのですね。

でしたらA1:B5をドラッグして画面の上にグラフアイコンがありませんでしょうか?
もしなければ挿入メニュー→グラフで、レーダーを選んでください。
レーダーグラフの形式は3種類あります。

> 作成後に編集する場合の方法も教えてください。

出来上がったグラフを右クリックしてグラフの種類、です。
元のデータの系列が列になっていればクモの巣グラフができます。

> 5種類とも単位(数値)が違う

5本の軸それぞれに違う単位を、とのことですか?
それは無理だと思いますので、付け焼刃的な方法としては
テキストボックスを重ねてしまうという方法を取る事があります。

もし、0.5もあれば200もあるなど、数値に開きがありましたら、
元のデータを工夫し、5段階評価にする、パーセンテージで計算する、
などの工夫が必要なのではないかなと思います。

> レーダーグラフとは、Excelで作成可能のものなのか

こちらはExcel2000ですが作成できます。
書かせていただいた通りのレイアウトですと
A1から

大きさ
サイズ
階級
長さ
のようになっていて、B列に数値が入っているのですね。

でしたらA1:B5をドラッグして画面の上にグラフアイコンがありませんでしょうか?
もしなければ挿入メニュー→グラフで、レーダーを選んでください。
レーダーグラフの形式は3種類あります。

> 作成後に編集する場合の方法も教えてください。

出来上がったグラ...続きを読む

Qjavaアプレットでのy=x^2のグラフ

javaアプレットでy=x^2のグラフを描写したいのですが、現在の状態ではグラフの右側しか画面に現れません。軸の移動をすればよいと思うのですが、どのように修正すればよいのでしょうか?

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;

public class test1 extends Applet{

public void paint(Graphics g){
g.setColor(Color.red);
int x,yp=100,xp=0;
for(x=0;x<200;x++){

int y=(int)(x*x)*(-1)+100;

g.drawLine(xp,yp,x,y);
xp = x;
yp = y;
}
}
}

Aベストアンサー

for(x=0;x<200;x++) で、0≦x<200の範囲でxが変化して、 y=-x^2+100の計算をしているのですから、その範囲しか表示されない(=放物線の半分しか表示されない)のは当り前です。

数学のグラフを書くときは、
1) 数学での座標(x,y)で計算する
2) 1)で求めた座標(x,y)を画面上の座標(x',y')に変換する
という手順を踏むのがよいでしょう。

x' = x方向の縮小拡大率 * x + 数学での(0,0)に対応する画面上の座標でのx'の値
y' = -1 * y方向の縮小拡大率 * y + 数学での(0,0)に対応する画面上の座標でのy'の値
※ 数学のyと画面のy'は大小と上下の関係が逆になっているので、-1倍します

このプログラムでも、実際に変数yには x^2ではなく、
int y=(int)(x*x)*(-1)+100

・y方向の縮小拡大率 = 1
・数学での(0,0)に対応する画面上の座標でのy'の値 = +100
で変換した値が使われています。

Qエクセルで「グラフの種類」「

エクセルで「グラフの種類」「円」でグラフを作成する場合です。時計の12時を起点に時計回りで、それぞれ
53%、11%、10%、8%、その他で作りたいです。ところが、53%の分が12時からスタートしなかったり、一旦「モノクロ円」にしたらカラーに戻らなくなったりしまいました。どのようにしたらよいか教えてください。

Aベストアンサー

グラフの種類のユーザー設定のモノクロ円で、白黒にしたのだったら、再度グラフの種類を選択し、標準で円グラフ・形式を選択し、オプションの標準の書式にチェックを入れれば変わります。
また、起点の変更はグラフを選択、データ系列の書式設定からオプションで、グラフの基線位置の角度を変更すれば良いと思います。

これは、エクセル2000での方法ですが、多分エクセルだったらこれで可能だと思います。

Q秀丸で、1行目と2行目を入れ替える。

秀丸で、1行目と2行目、3行目と4行目(以下、同様に5行目と6行目・・・と続く)を入れ替える方法を教えて頂けませんか。以前、同様の質問があったと思いますが、検索をかけても出てきません。

[データ例]
これはペンです。
This is a pen.
これもペンです。
This is also a pen.
これはペンですか。
Is this a pen?

但し、奇数行は日本語とは限りませんし、偶数行も英語とは限りません。
お願いします。

Aベストアンサー

ANo.#3 の Bo_Bo です。

ANo.#3 のマクロでは、エラーになる場合があります。
使用されるのであれば、差し替えをお願いします。
手順は ANo.#3 と同じです。

-- ▼マクロは次の行から▼ ---------------
// 奇数行と偶数行を入れ替える
disabledraw;
gofiletop;
while(code != eof)
{
 if(lineno == linecount2) break; // この一行を追加
 beginsel;
 movetolineno 1, lineno + 1;
 if(code == eof && lineno % 2 == 0)
 {
  escape;
  break;
 }
 cut;
 if(lineno == linecount2)
 {
  golineend2;
  insert "\n";
  paste;
  break;
 }
 movetolineno 1, lineno + 1;
 paste;
}
gofiletop;
enabledraw;
endmacro;
-- ▲上の行まで▲ -----------------------

ANo.#3 の Bo_Bo です。

ANo.#3 のマクロでは、エラーになる場合があります。
使用されるのであれば、差し替えをお願いします。
手順は ANo.#3 と同じです。

-- ▼マクロは次の行から▼ ---------------
// 奇数行と偶数行を入れ替える
disabledraw;
gofiletop;
while(code != eof)
{
 if(lineno == linecount2) break; // この一行を追加
 beginsel;
 movetolineno 1, lineno + 1;
 if(code == eof && lineno % 2 == 0)
 {
  escape;
  break;
 }
 cut;
 if(lineno == linecou...続きを読む

Qエクセル:グラフ:2種類のX軸の書式設定

X軸が2つあるグラフを作成しました。

X軸で右クリックして、「軸の書式設定」にて、配置を縦書きにしたいのですが
グラフエリアに近いほうのX軸(月数)は縦書きになるのですが
下段にあるもう一つのX軸(年数)が変化しません。
(下記のイメージで言うと月数は縦書きになるのですが、年数が横書きのままです)

年数も縦書きにする方法をおしえてください。


<イメージ>
Y軸は金額
X軸の1種類目(グラフエリアに近いほう)月数。2種類目(下段)は年数。

(y軸)
1000円

500円

0
    1月 2月 3月 1月 2月 3月
    2007年      2008年     (x軸)

→月数は縦書きになるのですが、年数の方を縦書きにする方法が分かりません。

Aベストアンサー

数値軸ラベルの事ですね。

それを右クリックして「書式設定」「配置」タブの左側の「文字列」が
縦になっているものを選択して、縦になりませんか。

フォントが大きくてグラフエリアに収まらない時もなりませんが。

最終手段としてグラフを選択状態で「縦書きテキストボックス」で入れたら
いかがでしょう。

ただ描画するより、次の方法がいいです。

グラフを選択し、数式バーをクリック。 = を入れ、使用する年号のセルを
クリックしてエンター。
これでグラフ内にテキストボックスがどこかに落ちるので、配置し、
右クリック「テキストボックスの書式設定」「配置」「方向」で縦を選択します。

セルの内容と連動します。

QX軸の左端にも目盛を表示したい

通常エクセルでグラフを書くときに、
X軸目盛はいちばん左端からではなく、ひと目盛右から目盛値が刻まれますが、左端から目盛値を表示するにはどうしたらよいですか?

Aベストアンサー

「折れ線グラフ」のようなタイプなら、「散布図」を選択すれば可能のはずです。なおX軸は、折れ線グラフでは項目番号、散布図では数値を表わしますから、実験結果を纏めるような場合は散布図を使用します。散布図のX軸の目盛値を整数にしたい等は、軸をカーソルで選択し右クリック、「軸の書式」タブ「表示形式」にて変更可能です(Y軸も同様)。

以上、ご参考まで。

Q【イラレ】系列が2種類ある場合のグラフ

うさぱんと申します。
イラストレーターのグラフの作り方で質問です。

以下のようなグラフを作る場合は
どのようにしたら良いでしょうか?
(よくある系列が1つのものは作れます。)

◆系列が2種類
一つのカテゴリに対し、
Aの数値とBの数値があり、隣あわせのグラフに
なる。


【制作環境】
OS/WIN XP
ソフト/illustratorCS
元データ/エクセルのグラフ

どうぞよろしくお願い致します。

Aベストアンサー

棒グラフを選び、データ入力は縦列に水1、水2、水3……、横行にサプリ1、サプリ2で入力でできませんか?
サンプル(エクセルデータ?)では逆に入力されていますが、同じように入力してしまったら、「行列置き換え」アイコンをクリックで変えられます。1系列はできるようですから、そんなことはないとは思いますが……
以上はバージョン10ですが、操作法が変わっているようならヘルプをご覧ください。

Qエクセルで行列を入れ替えるをフォルダ単位で行いたい

タイトルの通り、行列を入れ替えたいエクセルファイルがあるのですが、数が多くいちいちファイルを開いてやるのはあまり、いいやり方ではないかなと思っています。どなたか、ファイルをひからずに、フォルダに入っているファイルごとに行列入れ替えを適用する方法をご存知の方がいらっしゃいましたらよろしくお願いします。

入れ替えごのファイルは元のファイルを上書きしても大丈夫です。

Aベストアンサー

どの方法であれ、データを開かず(メモリに読み込まず)作業することはできません。しかし、アプリのインターフェイス(要は画面)を表示せずにバックグラウンドで処理することは可能です。最も簡単な方法はVisualBasic.Netを使うことだと思います。ExpressEditionがお勧めです。無料ですし、ご希望のことはそれで十達成できます。私は必要に応じてコードをしょっちゅう書きかえるので、実行可能ファイルにせずにデバッグモードで実行しています。

VBScriptingで済ます方法(メモ帳があればできる)もあるのですが、インテリセンスが使えないし、メソッドやプロパティを調べるのも面倒なので、あまりお勧めできません。(記述に結局時間がかかる) ただ、雰囲気を味わうのにはいいので、サンプルコードを書いてみました。以下のコードをコピーして、メモ帳にペーストし、テキスト形式で、拡張子を.vbsにして保存。ダブルクリックして実行してください。

** Cドライブ直下にtext.xlsという名前のダミーファイルを置いてください。
** xlApp.visible= FalseのところをTrueにすると可視です。

このコードにはありませんが、ファイルやディレクトリ内情報の取得や操作、エクセルのコントロールなど全く問題なく実現可能です。主要部分をエクセル側にマクロを置いて処理させてもよいと思います。

'Excel起動
Set xlApp = CreateObject("Excel.Application")
'True=可視 False=不可視 デフォルトはFalse
xlApp.visible= False

'処理開始(本来は全書類が終わるまでループ)

'ファイルを開く
Set xlBook =xlApp.Workbooks.Open("C:\test.xls")
'行列変換(もどき)
Set xlSheet1 =xlBook.WorkSheets(1)
Set xlSheet2 =xlBook.WorkSheets(2)
xlSheet1.cells(1,1)="test1-1"
xlSheet1.cells(1,2)="test1-2"
xlSheet2.cells(1,1)=xlSheet1.cells(1,1)
xlSheet2.cells(2,1)=xlSheet1.cells(1,2)

'確認表示(通常不要)
msgbox xlSheet2.cells(2,1).value
'保存
xlBook.Save
'閉じる
xlBook.Close
'処理終了

'Excel終了(必ず入れる)
xlApp.Quit

どの方法であれ、データを開かず(メモリに読み込まず)作業することはできません。しかし、アプリのインターフェイス(要は画面)を表示せずにバックグラウンドで処理することは可能です。最も簡単な方法はVisualBasic.Netを使うことだと思います。ExpressEditionがお勧めです。無料ですし、ご希望のことはそれで十達成できます。私は必要に応じてコードをしょっちゅう書きかえるので、実行可能ファイルにせずにデバッグモードで実行しています。

VBScriptingで済ます方法(メモ帳があればできる)...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報