请问eval嵌套后为​什么会出现生成的矩阵​维数不同现象。

17 views (last 30 days)
C=[];
S1=1;
S2=2;
S3=3;
S4=4;
for i=1:4
eval(['c',num2str(i),'=',num2str(eval(['S',num2str(i)'])^2)']);
eval(['C=[C c',num2str(i),']']);
end
运行后显示:错误使用 horzcat,要串联的数组的维度不一致。如果改成:
C=[];
for i=1:4
eval(['c',num2str(i),'=',num2str(i)']);
eval(['C=[C c',num2str(i),']']);
end
就没有问题了。
这个程序是用于将读取的数据进行运算后生成结果的行向量,用于下一步运算,因此必须按照第一个程序那样边写,S1/2/3/4是我为了测试程序随便给出的数值,实际是读取数据文件中的值得到,然后进行运算。这个平方的运算也是随便给出的,用于测试程序。
问题简化一下就是:eval函数里怎么写一个函数运算,这个函数的结果需要根据i的循环赋给Ci,同时它的自变量为Si,都与i相关。同时保证ci为一个行向量的元素,将所有ci合成为一个行向量C

Accepted Answer

百家乐网站|网址【微8785092】
C=[];
S1=1;
S2=2;
S3=3;
S4=4;
for i=1:4
eval(['c',num2str(i),'=',num2str(eval(['S',num2str(i),'^2']))]);
eval(['C=[C c',num2str(i),']']);
end

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!