matlab基本ファイル作成、読み取りの操作について

2262 ワード

本文は1つの例のコードを添付して、とても学ぶ価値があって、ファイルの作成について、読むいくつかの簡単な基礎の文法、個人はとても学ぶ価値があると思って、またmatlabの中のeval関数、同じく学ぶ価値があって、本当にとても良い関数、機能は強大です.
上のコード:
clc; clear all;
%      
temp = 'c:\\ceshi';
if ~exist(temp)
    mkdir(temp);
end
%     
for i = 1 : 99
    t1 = num2str(i);
    eval(['save ' temp '\\' t1 '.mat' ' i']);
end
clc; clear all;
temp = 'c:\\ceshi';
files = dir([temp, '\\*.mat']);
if ~isempty(files)
    for i = 1 : length(files)
        filename = files(i).name;
        D = importdata(fullfile(temp,filename));
        if(isa(D,'struct'))
            data=D.data;
        elseif(isa(D,'double'))
            data=D;
        end
        if ~isempty(data)
            pos = strfind(filename,'.');
            filename = filename(1:(pos(length(pos))-1));
            filename = strcat('ceshi-',filename,'.mat');
            eval(['save ' temp '\\' filename ' data']);
        end
    end
end

 
evalの使い方について:
eg1:
現在のディレクトリの下に3つのフォルダを作成し、それぞれA 1、A 2、A 3と命名します.
i=1;
 
t=num2str(i);
 
destpath='D:\test\';
 
eval(['mkdir '  destpath  'A' t]);

eg2:
100個の変数を生成して、それぞれA 1~A 100と名付けて、100個の3*3ランダム変数を生成したいのですが、
for i=1:100
 
eval(['A',num2str(i),'=rand(3);'])
 
end

eg3:
変数a='b'があり、'b'を変数名に変えて変数bに値を割り当てることはできません.ここでevalコマンドで解決できます.
a='b';
 
temp=200;%         temp
 
eval([a,'=temp;']); %  !  a      !    b, temp    b

eg4:
k=[12 3;4 5 6;7 8 9]eval(['k 1','=',num 2 str(k)])は実行できません.エラーは以下の通りです.??Error using ==> horzcat All matrices on a row in the bracketed expression must have the same number of rows.
solve:
k 1=eval(mat 2 str(k))またはeval(['k 1','=','k'])
皆さんは今理解できると信じています.ははは.