MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 561|回复: 4|关注: 0

[已解决] 如何使用循环命名变量并赋值

[复制链接]

新手

37 麦片

财富积分


050


20

主题

260

帖子

4

最佳答案
  • 关注者: 1
我想设置三个矩阵,名字分别为botmun1,botmun2,botmun3.这三个矩阵分别是根据一个t矩阵和一个BOTMFN矩阵组合来的,
bottom_n1=zeros(250,8);
for i=1:250
    for j=1:4
        bottom_n1(i,2.0*j-1.0)=t(4.0*i-4.0+j,1);
        bottom_n1(i,2.0*j)=BOTMFN(4.0*i-4.0+j,2);
    end
end

bottom_n2=zeros(250,8);
for i=1:250
    for j=1:4
        bottom_n2(i,2.0*j-1.0)=t(4.0*i-4.0+j,1);
        bottom_n2(i,2.0*j)=BOTMFN(4.0*i-4.0+j,3);
    end
end

现在我不想一个一个的输入进去,想通过一个循环,因为这三个矩阵唯一的不同就是他们的名字的后缀分别为1、2、3以及在BOTMFN矩阵中对应的列的值。我从网上查了下,看到可以用eval函数来设置循环变量的名字,但是怎么跟矩阵结合起来呢?
我最后就是想变成一个类似这样的程序
for k=1:3
bottom_nk=zeros(250,8);
for i=1:250
    for j=1:4
        bottom_nk(i,2.0*j-1.0)=t(4.0*i-4.0+j,1);
        bottom_nk(i,2.0*j)=BOTMFN(4.0*i-4.0+j,k+1);
    end
end

end
当然我这个程序肯定是不对的。想着使用num2str,但是不知道该怎么用。。只要求论坛大牛们的帮助。谢谢~

论坛优秀回答者

专家

2031 麦片

财富积分


20003000


0

主题

2555

帖子

465

最佳答案
  • 关注者: 60
发表于 2017-5-16 23:25:07 | 显示全部楼层
help eval或许能够帮到你

论坛优秀回答者

权威

5511 麦片

财富积分



5

主题

6872

帖子

1263

最佳答案
  • 关注者: 272
发表于 2017-5-17 06:41:07 | 显示全部楼层 |此回复为最佳答案
试试这样
  1. for k=1:3
  2. eval(['bottom_n',num2str(k),'=[]']);
  3. for i=1:250
  4.     for j=1:4
  5.         eval(['bottom_n',num2str(k),'(',num2str(i),',',num2str(2.0*j-1.0),')=',num2str(t(4.0*i-4.0+j,1)),';']);
  6.         
  7.     end
  8. end

  9. end
复制代码

新手

37 麦片

财富积分


050


20

主题

260

帖子

4

最佳答案
  • 关注者: 1
 楼主| 发表于 2017-5-17 08:18:11 | 显示全部楼层

非常感谢,我修改了一下,就是这样的。我终于知道eval函数怎么用了。:D还是咱们论坛里热心的人比较多~哈哈

新手

37 麦片

财富积分


050


20

主题

260

帖子

4

最佳答案
  • 关注者: 1
 楼主| 发表于 2017-5-17 08:26:34 | 显示全部楼层
diting14 发表于 2017-5-16 23:25
help eval或许能够帮到你

感谢你,我已经doc eval了,但是没搞太明白。。所以才发的贴。。我晓得咱们论坛的习惯,尽量先doc或者搜索查找。。实在找不到了再发帖的。。。:lol
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表