本文附上一个例子代码,很值得学习,关于文件创建,读取的一些简单基础的语法,个人觉得很值得学习,另外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:
当前目录下建立三个文件夹,分别命名为A1、A2、A3
i=1;
t=num2str(i);
destpath='D:\test\';
eval(['mkdir ' destpath 'A' t]);
eg2:
我想生成100个变量,取名分别为A1~A100,生成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=[1 2 3;4 5 6;7 8 9]
eval(['k1','=',num2str(k)])就无法运行,出现错误如下;
??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.
solve:
k1=eval( mat2str(k) ) 或eval(['k1','=',‘k’])
好了 相信大家现在可以理解了吧 哈哈。。