Matlab eval用法

eval('a=rand(2,3)')显示a
a =
0.4103 0.0579 0.8132
0.8936 0.3529 0.0099
eval('a=rand(2,3);') 不显示a

temp_name=[1,2,3];
temp={'data'};
eval([str2mat(temp) '=' mat2str(temp_name)]);
输出
data =
1 2 3

我的问题是不输出显示data
请问我这个句子 eval([str2mat(temp) '=' mat2str(temp_name)]);
应该怎么改或者说分号加在哪里?
谢谢

eval()函数的功能就是将括号内的字符串视为语句并运行,其用法为:

例如: eval('y1=sin(2)')就是相当于在matlab命令窗口输入了y1=sin(2)这条命令。
多在循环中使用,可以对多个名字有规则的变量或文件进行操作,
例一:
for x=1:5
eval(['y',num2str(x),'=',num2str(x^2),';'])
end
以上语句等价于执行以下5句:
ynum2str(1)=num2str(1^2);
ynum2str(2)=num2str(2^2);
ynum2str(3)=num2str(3^2);
ynum2str(4)=num2str(4^2);
ynum2str(5)=num2str(5^2);
例二:
subplot(711);plot(t,y);title('原始信号’);
for i=1:6
subplot(7,1,i+1);
plot(t,imf(i,:));
eval(['title(''IMF',int2str(i),''');']);
end
-------------------------
以上6行程序实际上是执行以下7条命令
subplot(711);plot(t,y);title('原始信号');
subplot(7,1,2);plot(t,imf(1,:));title('IMF1');
subplot(7,1,3);plot(t,imf(2,:));title('IMF2');
subplot(7,1,4);plot(t,imf(3,:));title('IMF3');
subplot(7,1,5);plot(t,imf(4,:));title('IMF4');
subplot(7,1,6);plot(t,imf(5,:));title('IMF5');
subplot(7,1,7);plot(t,imf(6,:));title('IMF6');
其中最后6条是通过循环里面执行的语句
这里主要是通过eval()函数实现了输出title('IMFi');这个语句
1.把 title('IMF 看做一个字符串
2.把i (i=1,2,3,4,5,6)这个浮点型变量以字符的形式输出
3.把 '); 看做一个字符串
以上三部分整合起来就是 输出命令 title('IMFi');
其中值得注意的是想要输出单撇号,用''代替'即可,就好像C语言用\\代替\是一个道理,都属于特殊符号。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-31

1、假如我要对a1,a2,a3,a4,……,a100分别赋予1,2,3,……,100,这时eval就发挥作用了。

for i=1:100

eval(['a' num2str(i) '=' num2str(i)]);

end

2、再比如批量存数据或图片文件等等。

那么开始提到的例子也就好解释了。

注意:eval中的中括号在两个以上字符串出现时一定要有,起连接作用。

如: 

input:[‘hello’ ‘world’]

output:helloworld 

扩展资料:

函数说明

eval(expression)在字符串表达式中评估MATLAB代码。如果你在一个匿名函数或者含有嵌套函数的函数里面使用eval,那么评估的expression将不能创建一个变量。

[output1,...,outputN]=eval(expression) 从特定变量表达式即expression中存储所有的输出。

输入参数:

expression:含有有效的MATLAB表达式的字符串。如果要在表达式即expression里面包含数值,请使用int2str,num2str或者sprintf进行转换。

输出参数:

output1,...,outputN:是评估的表达式expression中的输出。

参考资料:百度百科—eval(MATLAB函数)

第2个回答  2019-01-08
这个原因很简单啊。就是因为有时候需要根据前边的结果进行操作,尤其是涉及到变量名的时候。
给你出个题,你就明白了:
请产生f1,f2,f3,f4……f100,其中f1中随机放1个元素,f2中随机放2个元素,f3中随机放三个元素……
这时候使用eval就很简单了
for
index=1:100
eval(['f'
num2str(index)
'=rand(1,'
num2str(index)
');']);
end
你想想用什么命令可以直接得到这个结果呢?
第3个回答  推荐于2016-07-06
eval(strcat(str2mat(temp), '=', mat2str(temp_name),';'));

就行了。本回答被提问者采纳