2016-08-18 14 views
0

N行とM列の行列を少し異なる名前のN行列に分解したい。問題は、行列をロードするための入力として名前を使用し、それをそれらのN行列に割り当てる方法は何ですか?私は、機能を変更し、(入力若干異なっている)別個の名前の異なる行列の名前を入力として名前を使用することがないようにする。このようにN行とM列の行列をN行列に分解するにはどうしたらよいですか?

function bestfunc(myname) 
data = load(myname, '-mat') 
N = length(data) 
for i=1:N; 
myname = data(i,1) 
filename = ['myname_', num2str(i), 'mat'] 
save(filename, 'myname') 
end 

+0

'myname'が文字列の場合、引用符を付ける必要はありません。 'filename'を生成するときに丸めます。 – beaker

答えて

0

同じ名前の変数が2つあります。mynameです。最初の関数は関数の入力です。関数内に文字列ではない新しい変数を作成します。

  1. 拡張子を付けずにファイル名を渡し、関数内に.matを追加します。
  2. ファイルを読み込んでforループを開き、データの各チャンクに対して
  3. を開き、新しいファイル名を作成します。そのようなあなたはmat残りの部分は正常に動作する前に、あなたはまた、.を忘れてしまったmyfile_1.mat、...、myfile_12.mat

を取得しますmyfileとしてファイル名をfname + '_' + i + '.mat'

  • を使用します。

    function bestfunc(fname) %<-- pass the filename without the extension 
    ffname = [fname '.mat']; %<-- add the extenstion 
    data = load(ffname);  %<-- load the file 
    N = length(data); 
    for i=1:N 
        myname = data(i,1); %<-- load each row 
        filename = [fname, '_' num2str(i), '.mat']; % <-- the dot 
        save(filename, 'myname'); 
    end 
    

    サンプル実行:

    >> main('myfile') 
    
    
    filename = 
    
    myfile_1.mat 
    
    
    filename = 
    
    myfile_2.mat 
    
  • 関連する問題