|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2007-4-22 13:55
|
显示全部楼层
多谢大家帮助,问题已经解决,使用cell格式. filename_i 不是要存的文件名,是一个变量.因为程序需要随着for循环把数据存入相应的变量里,而数据是维数不同的矩阵,矩阵又包含了不同的数据类型,所以最后还是用数组解决了这个问题.
我想大家在编程处理大量数据的时候都可能碰到类似的问题, 这个讨论给出了很多提示.多谢.
这里我也给出另一个论坛的相关讨论:
我觉得可以有三种方法
1.用eval根据变量名取变量
[Copy to clipboard] [ - ]CODE:
i = 1;
strVarName = sprintf('VarName%d', i);
whatis=functionA(eval(strVarName)); % 此处eval 里的东西只能是变量名字,不能是一个赋值语句
2. 构建一个字符串语句,把要传递的变量赋给一个临时变量存储
[Copy to clipboard] [ - ]CODE:
i=1;
eval(sprintf('Temp=VarName%d;', i)); % 将 VarName1 放到临时变量 Temp 中
whatis=functionA(Temp); % 以 Temp 作为参数调用函数
3. 调用函数的语句也构造字符串语句用eval来执行
[Copy to clipboard] [ - ]CODE:
i = 1;
strCmd = sprintf('whatis=functionA(VarName%d);', i);
eval(strCmd);
建议:
我以前也用这样的方式构建动态的变量名字,但是后来发现这种方法容易出错,建议用Cell Array来存储。
[Copy to clipboard] [ - ]CODE:
for i=1:5
Var{i} = [0:1:i];
end
whatis=functionA(Var{1});
这样存储数据和调用函数都没有问题,而且非常方便。 |
评分
-
1
查看全部评分
-
|