找回密码
 注册
Simdroid-非首页
查看: 105|回复: 8

如何设置一个名字可以变化的变量名

[复制链接]
发表于 2010-8-14 11:41:16 | 显示全部楼层 |阅读模式 来自 美国
如何设置一个名字可以变化的变量名, 问题如下:
有一个函数QQ(car)供调用,输出一个变量,多次执行这个函数,每次输出的变量名需要不断变化,如何做到呢?

[speed] = QQ(car)

speed这个变量应该不断改变名字,比如调用第一次 变量名为speed_1, 第二次为speed_2, 以此类推,speed_3, ...

我试了genvarname,不管用,有什么办法设置?

多谢!
发表于 2010-8-14 15:01:51 | 显示全部楼层 来自 新疆乌鲁木齐
Simdroid开发平台
问之前不妨先搜索一下,回答过很多次了。
回复 不支持

使用道具 举报

发表于 2010-8-14 19:31:13 | 显示全部楼层 来自 河北廊坊
方法比较多,我一般常用sprintf,你可以具体查一查其用法
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-14 22:49:29 | 显示全部楼层 来自 美国
方法比较多,我一般常用sprintf,你可以具体查一查其用法
qibbxxt 发表于 2010-8-14 19:31


多谢,我试试
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-14 22:49:54 | 显示全部楼层 来自 美国
方法比较多,我一般常用sprintf,你可以具体查一查其用法
qibbxxt 发表于 2010-8-14 19:31


thanks,搜过,看到eval,但是试了不管用
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-15 00:07:18 | 显示全部楼层 来自 美国
sprintf我试了不行,

我是想用
speed = 某个字符串,这个字符串包括 字符和数字, 每次手动修改数据
e.g.,  size = 100;
speed = ['Simulation' num2str(size)]
force = ['Load' num2str(size)]
Acc = ['Ratio' num2str(size)]

[speed, force ,Acc] = QQ(car)
调用QQ函数后,输出的speed, force, Acc以 Simulation100, Load100, Ration100
三个变量名保存下来.
试了半天也没找到办法.
回复 不支持

使用道具 举报

发表于 2010-8-15 00:40:57 | 显示全部楼层 来自 新疆乌鲁木齐
没看出eval不行,软件是死的,人是活的...
  1. function [ x,y,z ] = qq(i)
  2. x=i;
  3. y=2*i;
  4. z=3*i;
  5. end
复制代码
  1. function test_var
  2. clc
  3. for i=1:3
  4. strx=['x',num2str(i)];stry=['y',num2str(i)];strz=['z',num2str(i)];
  5. [x,y,z]=qq(i);
  6. eval([strx,'=x'])
  7. eval([stry,'=y'])
  8. eval([strz,'=z'])
  9. end
复制代码
in command windows,input the code below:
  1. test_var
复制代码
ps:这种方法去赋值个人感觉太笨,抛开eval的效率太低不说,这种赋值结构也感觉十分呆板。可考虑运行计算时,结果统一至一个结构数组或者cell或者矩阵,最后一总处理。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-15 01:38:41 | 显示全部楼层 来自 美国
解决,多谢高人!
提高效率的建议我会试试,非常感谢!
eval的用法在help文件里说的不详细,或者我没看明白,还有一个用法在另一个论坛里有大侠提到.

没看出eval不行,软件是死的,人是活的...function [ x,y,z ] = qq(i)
x=i;
y=2*i;
z=3*i;
endfunction test_var
clc
for i=1:3
strx=['x',num2str(i)];stry=['y',num2str(i)];strz=['z',num2str(i)];
[x,y, ...
bainhome 发表于 2010-8-15 00:40
回复 不支持

使用道具 举报

发表于 2010-8-15 13:31:07 | 显示全部楼层 来自 北京
5# vibration1996
我的意思是
你把bainhome兄的程序中的

  1. strx=['x',num2str(i)];stry=['y',num2str(i)];strz=['z',num2str(i)];
复制代码

用下面的

  1. strx=sprintf('x%d',i);stry=sprintf('yx%d',i);strz=sprintf('z%d',i);
复制代码

中的sprintf代替

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 21:19 , Processed in 0.058017 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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