fortranプログラマです。
Matlabはライブラリが豊富なので、使い始めました。
fortranのwriteは書式指定や繰り返し等便利なのですが、Matlabの書式指定した入出力方法が良くわかりません。
fortranのwriteやread, c言語のprintfでやれることをどのように実現していますか?

 Accepted Answer

Hernia Baby
Hernia Baby on 30 Jul 2021
基本はドキュメントを見ていただくとやりたいことが出てきます。
Google等で「やりたいこと matlab」がオススメです
操作に慣れたい場合はMATLAB入門で学習することをお勧めします(無料)。
------------------------
ちなみに
x = 1
x = 1
y = "Hello World"
y = "Hello World"
といったようにセミコロン( ; )をつけない場合はそのまま出力を見ることができます。

6 Comments

Tomohisa Kato
Tomohisa Kato on 30 Jul 2021
ご回答ありがとうございます。単純な使い方ではなくて、例えば下記のようなパターンです。
fortran
write(*,'(f8,2,",",15(",",E12.4))") f, (a(i),i=1,15)
これは、書式指定でfとa(1)~a(15)を固定小数点で1個、浮動小数点で15個出力するという指定です。
C言語だとprintfで(少し面倒ですが)同様のことができます。
matlabだとどのように書くのが良いのでしょうか。
fortranやC言語との対照表が載っている書籍あると助かります。
頂いた例で考えると fprintfsprintf 等が該当すると思います
試しに fprintf での例を抜粋します
A1 = [9.9, 9900];
A2 = [8.8, 7.7 ; ...
8800, 7700];
formatSpec = 'X is %4.2f meters or %8.3f mm\n';
fprintf(formatSpec,A1,A2)
X is 9.90 meters or 9900.000 mm X is 8.80 meters or 8800.000 mm X is 7.70 meters or 7700.000 mm
このときformatSpec内にて各ベクトルに対応する書式演算子を指定してください
ドキュメントのformatSpecにて詳細書かれております
対照表は残念ながら見つけることができませんでした
書式設定などは こちら を参考にされるとよいかなと思います
Megumi Fukuda
Megumi Fukuda on 31 Jul 2021
@Hernia Babyさんのご回答通り、Googleにて 「MATLAB(やりたいことを記述)」、または「Fortran to MATLAB (やりたいことを記述)」と探していただくと、参考になる情報にたどり着きやすいと思います。
またFortranからMATLABを呼び出す機能もありますので、必要に応じてこちらのご利用もご検討いただけると良いかと思います。
https://jp.mathworks.com/help/matlab/matlab-api-for-fortran.html
Tomohisa Kato
Tomohisa Kato on 31 Jul 2021
情報ありがとうございます。C言語に近そうですね。試してみます。
Tomohisa Kato
Tomohisa Kato on 31 Jul 2021
FortranからMATLABを呼び出す機能は興味深いです。gccに対応されていますが、将来的にgfortranに対応されたら、使ってみたいです。fortranやsed、awkでプログラミングして、bash等のスクリプトでまとめると、仕事が非常に捗るので、古いやり方ですが、いまだに、この方法が一番効率が良いです。Msys2(MinGW64)を使っています。今回matlabにfortranでは有料の不等式制約の最小二乗法があったので、使ってみました。今後もメジャーなmatlabの方が進歩していくと思いますので、是非gfortran(mingw)への対応をご検討いただけるとありがたいです。また、仕事(会社)ではmatlabコンパイラーも使用可能と思いますので、調べてみます。色々ありがとうございました。
Tomohisa Kato
Tomohisa Kato on 2 Aug 2021
詳細なご回答色々ありがとうございました。適材適所で対応できるよう、勉強していきます。

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!