2021-10-01から1ヶ月間の記事一覧

問題は日本語じゃない、あなただ

日本語は論理的でないという議論があった。今の若者はどう思っているのか分からないが、昔は欧米に対する劣等感がそうさせたのか日本語が論理的でないと本気で思っている人たちがいた。明治の頃は、森有礼が日本語廃止論・英語採用論を議論していた。日本の…

Global English 05ー長い名詞句はNGー

平屋(1階建ての家)だったらthe one-story buildingとなる。この「複数の名詞が連なった句」が名詞句。名詞句は3ワード以下にした方が良い。著者曰く、2ワードや3ワードでも曖昧になることがあるという。本項では、長い名詞句を見つけた時の対処法をいく…

Global English 04ーそのwill必要?ー

未来のことを表すのに当然willを使う必要があるが、現在形でも文意が損なわれないことが良くある。そういう時はwillを省く。 [bad] When you develop your application, test different values to determine which values will result in the best performan…

Global English 03ー重要な動作は動詞で表すー

その文で一番重要な動作(action)は、名詞では無くて動詞で伝えましょうという話。「合意に達した(reach an agreement)」とか書かないで、単に「合意した(agree)」と書きましょうということ。 [bad] A spawner program enables the encryption of user …

Global English 02ー1文は20単語まで。概念を説明するときは25単語までー

タイトルにある通り。以下の二つの例は、タイトルの通りに修正したもの。1文が短い方が読みやすいと感じるはずだ。 例1 [bad] If Chocolate Bits is set to No, indicating that there are no chocolate bits in the sample batch of ice cream, then the s…

Global English 01ーはじめにー

SASという統計解析などのソフトウェア会社が、"The Global English Style Guide: Writing Clear, Translatable Documentation for a Global Market" (著者 John R. Kohl、ISNB: 978-1-59994-657-3)という本を出版している。 「なんでソフトウェア会社が英語…

英語の語尾長音符号

語尾の長音符号(ー)について何が正式かということに対する答えは存在しない。というのも、JIS表記で定めた規定と国語審議会の基本方針で異なるし、どちらも慣用に従うとあるから。 JIS Z8301:2008 附属書G.6.2.2 英語の語尾に対応する長音符号の扱いは、通…

公用文のルール

公文書を書く際にはルールがある。歴史・経緯・有効性は wikipedia に詳しい。 以下、ルールの抜粋 送り仮名(昭和48年内閣告示第2号) 複合名詞であって読み間違えるおそれのない語については、送り仮名を省く。 (例、取消し、申込み、申込書、打合せ、打…

MATLABのmeshcのコンターを描くz面を変更したい

meshcを使うと、3次元の分布とともにコンター図を描ける。 デフォルトでは、コンター図はzlimの最小値に描くが、任意の場所に変更するには次のようにする m = meshc(peaks); m(2).ContourZLevel = 10; % z=10の場所にコンター図を描く

MATLABのプロットの枠外を消したい

plotやplot3dした時のグラフの外枠を消す方法 set(gca,'Visible','off')

MATLABのプロットの枠外に注釈を書きたい

axesコマンドを使って、透明なレイヤーを確保して、そのレイヤーにtextコマンドをつかって文字を書き込む。textコマンド(かつデフォルトの単位系)を使うときは、画面左下の座標が(0,0)で画面右上の座標が(1,1)となる。 例1 x=linspace(0,2*pi,2000); y=ex…

MATLABで包絡線を描く方法

次のファイルをダウンロードする。 Envelope 1.1 https://jp.mathworks.com/matlabcentral/fileexchange/3142-envelope1-1 (https://jp.mathworks.com/matlabcentral/fileexchange/3142-envelope1-1) 実行例 x=linspace(0,2*pi,2000); y=exp(-x).*sin(20*x);…

MATLABでプロットするグラフをPC画面の中央に出したい

moveguiを利用する f=figure(); movegui(f, 'center');

MATLABでプログラムの依存関係を調べる方法

hoge.mというファイルが依存しているファイルの一覧を得るには以下のようにする。 >> matlab.codetools.requiredFilesAndProducts('hoge.m')' 最後の「'」が肝ですから

MATLABでグラムシュミット直交化

a, b, c, dがそれぞれ列ベクトルで、4次元の斜交基底を成しているとする。直交基底はqr関数を用いれば簡単に求められる。 >> base = [a, b, c, d]; >> [new_base, ~] = qr(base); new_baseの各列が直交基底を成す。n次元に応用可能。やっていることはGram Sc…

MATLABで複数のパルスの立上がり時刻を効率的に求める方法

例えばオシロで測定したデータをti, Vi (i=1,2,...)として、それをplot(t,V)とすると下図のような波形だとする。 このような、複数の電圧パルスの各立上がり時刻を効率的に求めるには、以下の様にすると便利。 >> % t ... time of signal (1xN array) >> % V…

MATLABのデータの型について

MATLABのデフォルトはdouble型。例えば >> a=2; class(2) ans = double singleや整数にしたい場合は >> a = single(2); >> a = int32(2); % 32ビット、4バイト、FortranでいうINTEGER(kind=4) となどとキャストして宣言する。 ちなみに、singleで計算してい…

MATLABでの時系列データの扱い

2012/02/21 20:00:13みたいな書式は人間にとっては良いけど、パソコンで扱う(ソートするとかプロットするとか)には不便なのでタイムスタンプにするのが良い。2012/02/21 20:00:13をタイムスタンプに変換するには次のようにする t1 = '2012/02/21 20:00:13'…

MATLABでCADファイルを表示する

CATIAのファイルを読み込ませたかったが、Simulink 3D Animationというのを購入するしかないようだ。FileExchangeにはCADを読み込むコードがいくつかあり、IGES Toolboxを使うこととした。 IGES Toolboxは以下のリンクよりダウンロード可能 http://www.mathw…

MATLABのパスの設定

MATLABを起動してuserpathと打つとユーザー割り当ての検索パスが表示される。MATLABは起動時にそのディレクトリにあるstartup.mを1回実行するので、パスの設定などはそこに書いておく。 R2012bの場合、Linuxでは >> userpath ans = /home/username/Documents…

MATLABの多次元配列で最大値(最小値)の場所を特定する方法

Mという4次元配列から最大値の場所を見つける例 M = randn(10,10,10,10); [~,I]=max(M(:)); [I1,I2,I3,I4] = ind2sub(size(M),I) 最大値はM(I1, I2, I3, I4)となる。

MATLABで多次元配列の値を効率よく補間する方法

interp2は遅いのでgriddedInterpolant()を使う。補間されるデータがNDGRIDで生成された格子を基にしているのか、MESHGRIDで生成され格子を基にしているかで使い方が違うので注意。 補間されるデータがNDGRIDで生成されている場合 [X1, X2] = ndgrid(1:10,1:1…

MATLABのlsqcurvefitを用いた最小二乗法で、ヤコビアンを指定する方法

フィッティングしたい関数myfuncがスカラー変数xとNp個のパラメータを受け取り、スカラーyを返すような関数とする。この時、数学の定義としてはヤコビアンは1行Np列である。しかし、matlabのプログラミングとしてはxに配列を投げてまとめて処理することが多…

MATLABで出力する図を指定の寸法で出力したいとき

フォント、フォントサイズ、図の大きさを指定する方法。 以下の例ではフォントサイズを10 ptにし、図の幅を8 cmにしている。ここで8 cmとしたのは、ジャーナルがa4用紙2段組みで、左右のマージンが大きめに2.5cmずつとし、簡単のため左右の段の間のスペース…

MATLABのmeshgridで作成した計算格子を一発で描画する方法

>> [Y, X] = meshgrid(-1:0.1:1); >> plot(X, Y, 'k-', X', Y', 'k-')

MATLABで計算過程を時々刻々とリアルタイムにプロットしたい時

基本は、drawnowを使ってイベントキューをフラッシュする。ただ、下記に示すように3つの方法が考えられる。方法1が速いしシンプルだが、凝ったプロットをしたいときに上手くいかない事もあるので、refreshdataも用いた方法2及び方法3も紹介する。 方法1…

MATLABの図のサンプルとそのコード例

MATLAB Plot Galleryという便利なサイトがあります http://www.mathworks.com/discovery/gallery.html 下の図のようにいろいろなサンプルが公開されています。

MATLABで3Dで線や矢印を描く方法

チューブプロットとmArrow3というのを組み合わせると下のような図が描ける。 チューブプロット(tubeplot) チューブプロットできるコードはFileExchangeにある: http://www.mathworks.com/matlabcentral/fileexchange/5562-tubeplot このFileExchangeのtubep…

MATLABの高速化

遅い部分を特定する 時間はticとtocを組み合わせて計る。tic/tocのヘルプに便利な例がある。 プロファイラーを使って、コードの遅い部分を特定する。 ベクトル計算の利用 ベクトル計算とは、簡単に行ってしまうとfor文を使わないやり方。例えば、meshgridで…

MATLABの図の目盛をカスタマイズ

図の目盛の値を文字列にしたいとき 例えば、横軸をA, B, C, D, Eとしたい時は、以下のようにする。 x = 1:0.1:5; y = rand(size(x)); xtick = 1:5; xticklabel = {'A' 'B' 'C' 'D' 'E'}; plot(x, y, 'b') set(gca, 'XTick', xtick, 'XTickLabel', xticklabel…