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

[已解决] 新手求助,如何通过变量名提取变量(类似指针的作用)

[复制链接]

新手

7 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
本帖最后由 friga 于 2019-3-27 14:12 编辑

将很多个数据变量存在了一个mat中,主程序内循环中可以得到一个dataname变量内存变量名称,想将dataname指向的数据在循环中赋值给data,但因为得出的是字符串,不知道如何将数据变量在循环中调用,matlab也好像没有便捷的指针


问题已解决
str=strcat('data=',dataname,';')
eval(str);

论坛优秀回答者

中级

514 麦片

财富积分


5001500


3

主题

824

帖子

94

最佳答案
  • 关注者: 71
发表于 2019-3-26 20:21:38 | 显示全部楼层 |此回复为最佳答案
friga 发表于 2019-3-26 16:56
其实是图中这种情况

在循环中可以得到不同的dataname,但是不知道如何调用使data中的参数直接是4*20 dou ...

你这个好搞啊
str='data='+dataname+';'
eval(str)

新手

7 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-3-27 14:10:44 | 显示全部楼层
coolchen302 发表于 2019-3-26 20:21
你这个好搞啊
str='data='+dataname+';'
eval(str)

我搞懂了谢谢!
直接用str='data='+dataname+';'会显示Matrix dimensions must agree.
改成str=strcat('data=',dataname,';')
再eval(str)就行啦,非常感谢,帮了很大的忙

论坛优秀回答者

中级

514 麦片

财富积分


5001500


3

主题

824

帖子

94

最佳答案
  • 关注者: 71
发表于 2019-3-26 14:08:30 | 显示全部楼层
你的问题好像没有描述太清楚,大致有两个方法
1. data=load(fiilename,variable)
用这个方法把指定文件中的指定变量读取出来,并赋值给data变量。
2. eval(cmd)
这就是cmd是字符串,相当于在命令行运行cmd字符串的指令,如eval('data=dataname'),cmd可以动态修改。

新手

7 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
 楼主| 发表于 2019-3-26 16:56:49 | 显示全部楼层
coolchen302 发表于 2019-3-26 14:08
你的问题好像没有描述太清楚,大致有两个方法
1. data=load(fiilename,variable)
用这个方法把指定文件中的 ...

其实是图中这种情况

数据集与循环中的dataname

数据集与循环中的dataname

在循环中可以得到不同的dataname,但是不知道如何调用使data中的参数直接是4*20 double那块
按第一种方法data=load(filename,dataname)的话出来的会是1*1的struct包裹了数据,想提取4*20double的话需要指令data.K0042000,就又回到原来的问题上了
第二种方法的话
>> eval('data=',dataname);
结果只是调用了K0042000,无法给data赋值
>> eval('data2=dataname')

data2 =

    'K0042000'


也还是无法赋值

之所以这么麻烦是因为本身K004还有2000在主体函数中还有其他作用所以不能固定化
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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