55493


MATLABでファイル読み込みを行い、読み込んだデータを使って計算しようとしています。  
以下のようなansを求めたいのですが、ファイル書き出ししたデータからだとうまく計算ができずにエラーが出てしまいます。

どのように修正すればいいでしょうか。  
バージョン：MATLABR2019a

コマンドラインで命令した場合

[code]

    >> A=[1;2;3;4;5]
    
    A =
    
         1
         2
         3
         4
         5
    
    >> B=[6;7;8;9;10]
    
    B =
    
         6
         7
         8
         9
        10
    
    >> B-A
    
    ans =
    
         5
         5
         5
         5
         5
    
[/code]

事前にファイルを作成しておく

[code]

    A=[1;2;3;4;5]
    save('Aarray.m', 'A')
    
[/code]

プログラム

[code]

    Aarray = load('Aarray.m')
    B=[6;7;8;9;10]
    
    Newarray = Aarray - B
    
    save('Newarray.m', 'Newarray')
    
[/code]

エラーメッセージ

[code]

    >> sample
    Error using load
    Number of columns on line 2 of ASCII file Aarray.m must be the same as previous lines.
    
    Error in sample (line 1)
    Aarray = load('Aarray.m')
    
[/code]

ご回答を受けて  
すぐに実行できる環境がMacのMATLABだったので、.txt拡張子で保存し実行したのですが、以下はwindowsでは問題にならないのでしょうか。

[code]

    >> save('Aarray.txt', 'A')
    >> sample
    Error using load
    Number of columns on line 2 of ASCII file Aarray.txt must be the same as previous lines.
    
    Error in sample (line 1)
    Aarray = load('Aarray.txt')
    
[/code]


CC BY-SA 4.0
2019-06-03T12:56:30.717
55488
2019-06-03T22:39:38.853
2019-06-03T22:39:38.853
question
matlab
MATLABにおけるデータ書き込みと読み込み


`save`と`load`のヘルプを読めばわかると思いますが、`save`でファイルフォーマットを指定しないと、データを`.mat`という独自形式のバイナリファイルに書き出します。しかし、`save`で書き出すときに、拡張子を`.m`としています。これは、MATLABのソースコードの拡張子でテキストフォーマットなので、`load`がデータフォーマットを誤解してうまく読み込めていないようです。

データをテキストでセーブするのなら、

[code]

    save('Aarray.txt', 'A', '-ascii')
    
    Aarray = load('Aarray.txt')
    
[/code]

としてください。

* * *

ちなみに、MATLABのソースコード以外に`.m`の拡張子を付けるのは、お勧めしません。MATLABに限ったことではありませんが、拡張子を想定された使い方以外に使うと、いろいろと問題が起きます。


CC BY-SA 4.0
2019-06-03T15:40:59.103
55493
2019-06-03T15:40:59.103
3605
55488
answer