matlab中eval语句循环变量的问题

for j=1:19
for i=1:19
eval(['T','=','a',num2str(j),'==','b',num2str(i),';'])
eval(['s(num2str(j),num2str(i))','=','sum(T(1:1980,1))',';'])
end
end
这程序理论上会生成一个19*19的S矩阵
可我生成的是57*57的矩阵 错在哪

你可能没理解好eval的用法,它将字符串转为正常语句执行,()中是被它操作的字符串,[]中是被拼接起来的字符串,之所以要拼接是因为诸如a1这样一个变量名是随循环而变化或由其他过程来决定的。
如aj=bi写在eval里是这样的 eval(['a' num2str(j) '=b' num2str(i)]) 只有起变化的部分打断原来的语句,其余部分用单引号保留,被连接的字符串之间留空格或逗号。eval(['T=a' num2str(j) '==b' num2str(i) ';']) eval(['s(' num2str(j) ',' num2str(i) ')=sum(T(1:1980,1));'])追问

貌似不是这出的问题,不过谢谢哈,确实不太熟悉matlab

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-14
a、b是向量吗,出错在第一名eval追问

a,b是向量,各有19个值,即a1,a2,a3,a4,....,a19,b1,b2,b3,....,b19

追答

应该改成这样:
eval(['T=a(' num2str(j) ')==b(',num2str(i),');'])

才能引用a向量中的元素a(1)、a(2)等。

matlab中eval语句循环变量的问题
你可能没理解好eval的用法,它将字符串转为正常语句执行,()中是被它操作的字符串,[]中是被拼接起来的字符串,之所以要拼接是因为诸如a1这样一个变量名是随循环而变化或由其他过程来决定的。如aj=bi写在eval里是这样的 eval(['a' num2str(j) '=b' num2str(i)]) 只有起变化的部分打断原来的...

matlab编程问题:用eval进行for循环将矩阵每一列赋予一个变量。运行出错...
c(:,num2str(i))这个地方有错误,eval接受字符串作为参数,下面是我的代码:clear all;close all;clcc=magic(33);for k=0:22 i=k+1 eval(['e',num2str(k),'=','c(:,i)'])end

matlab 将一些有规律的变量名循环处理 eval函数的使用
1、要把字符串拼接起来再eval,即 eval('sample=index',num2str(i));改成 eval(['sample=index',num2str(i)]);2、按MathWorks的官方建议,应尽量避免使用eval。比如这个例子,完全可以用cell数组实现。3、函数zeros误写成zero。

matlab中eval函数的详细用法是什么?
eval_r()函数的功能就是将括号内的字符串视为语句并运行\\x0d\\x0a例如: eval_r('y1=sin(2)')就是相当于在matlab命令窗口输入了y1=sin(2)这条命令。\\x0d\\x0a多在循环中使用,可以对多个名字有规则的变量或文件进行操作,\\x0d\\x0a例一:\\x0d\\x0afor x=1:5\\x0d\\x0a eval_...

Matlab "eval" 有个疑问。
eval(s)是将s表示的字符串作为Matlab命令来执行 以你的语句为例 i=1时 执行V = eval(['G' int2str(i)])相当于V = eval('G1')相与于V = G1 注意到,你并没有定义G1这个变量,所以会报错.可以看出你的G1~G100定义了二叉树图中的标签字符串,你需要做的是将G1~G100初始化好.Initializatio...

matlab中eval的用法问题
eval 执行字符串表达式 两步 1 构造字符串 2 执行字符串 \\\\\\ 构造字符串技巧 num2str 可以变数字为字符串 \\\\\\ \\\\\\ 常见的应用 1 自动保存文件 2 自动生成变量 3 内容不定问题 \\\\\\ 细节的问题 1) 必须是字符串 2) 单引号 是 ''' 单引号字符串 3) 特殊的 不妨用 char 4) [] 就可以...

“matlab”中eval函数怎么用?
eval_r()函数的功能就是将括号内的字符串视为语句并运行 例如: eval_r('y1=sin(2)')就是相当于在matlab命令窗口输入了y1=sin(2)这条命令。多在循环中使用,可以对多个名字有规则的变量或文件进行操作,例1:for x=1:5 eval_r(['y',num2str(x),'=',num2str(x^2),';'])end 以上...

关于MATLAB中eval语句使用的问题
在引号的最后再加个分号即可,执行的就是加了分号的语句了。eval(['im',num2str(a),'=double(temp);']);eval(['im',num2str(a)])=double(temp);这种做法是不可以的,eval函数会直接就运行里面的语句了,比如直接就运行了语句im2,然后再运行=double(temp),语法是错误的。

matlab中的eval是什么意思
matlab中eval()函数的功能就是将括号内的字符串视为语句并运行。如:eval('y1=sin(2)')就是相当于在matlab命令窗口输入了y1=sin(2)这条命令。多在循环中使用,可以对多个名字有规则的变量或文件进行操作,举例如下:for x=1:3 eval(['y',num2str(x),'=',num2str(x^2),';'])end% 以...

matlab eval执行多行语句
首先明确一点, eval内必须是完整的命令, 不能有头无尾 所以碰到for循环,if\/else, 都必须一直写到最后的end (代码有时显得不那么美观)eval(['for j=1:length(S_pos',int2str(i),')']) 只eval了循环头,不完整 for循环的多行可以用分号;延续 脚本编写时用...续行 eval(['for j=1:length...

相似回答