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

【已解决】字符串代表变量的函数或方法_批量赋值

[复制链接]
发表于 2010-12-6 13:31:15 | 显示全部楼层 |阅读模式 来自 韩国
本帖最后由 luckyrhkr 于 2010-12-6 16:30 编辑

定义
syms x1 x2 x3
q=[x1,x2,x3];
e=[1,2,3];

假如我想把q里的字符当变量用
怎样才能实现
x1=1
x2=2
x3=3
发表于 2010-12-6 13:41:06 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
不知道是不是这个意思
  1. clear;clc;close all
  2. syms x1 x2 x3
  3. q=[x1,x2,x3];
  4. e=[1,2,3];
  5. q=arrayfun(@(x)(subs(q(x),sprintf('x%d',x),x)),1:3);
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-6 14:07:53 | 显示全部楼层 来自 韩国
本帖最后由 luckyrhkr 于 2010-12-6 14:09 编辑

谢谢版主的回答。可能是我表达的不清楚。。
其实q里面都是变量的名字,我想要通过q时的数据来定位变量。最终的结果为:变量x1=1;x2=2;x3=3
请版本再帮一下忙吧。
我现在卡在这一步没有办法继续了。因为整个程序里有很多个这种变量从x1 x2 到xn

P.S:论坛好卡呀,是我的网络有问题了?
回复 不支持

使用道具 举报

发表于 2010-12-6 14:21:33 | 显示全部楼层 来自 河北廊坊
那就不要用符号变量了
  1. clear;clc;close all
  2. e=[1,2,3];
  3. q=strcat({'x'},num2str(e','%d'));
  4. arrayfun(@(x)(assignin('base', q{x}, e(x))),e);
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-6 14:30:56 | 显示全部楼层 来自 韩国
本帖最后由 luckyrhkr 于 2010-12-6 15:01 编辑

哈哈,非常感谢。帮了大忙了
虽然还不太懂第4行什么意思。回来慢慢研究下

不好意思。。。。我又回来了。。
还是有点问题。。q里面的x1,x2是另外已经定义好的变量。
我就是想把e里面的数据代入到x1,x2这些变量里面。。
而且e里面的数据并不是一直都是1,2,3。也有可能是其它数据。

有没有可能做成 q(1)=e(1)这种形式的吗
或者x(i)=e(i)
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-6 15:04:11 | 显示全部楼层 来自 韩国
本帖最后由 luckyrhkr 于 2010-12-6 15:07 编辑

版主还在不?能不能再帮忙看一下呀。和我预想的还是不太一样。

我主要是想把e里面的数据代入到x1,x2这些变量里面。。
而且e里面的数据并不是一直都是1,2,3。也有可能是其它数据。例如小数之类的

有没有可能做成 q(1)里面的数据为名字的变量=e(1)这种形式的吗
或者x(i)=e(i)
不知道这回说明白了没有。。。。
回复 不支持

使用道具 举报

发表于 2010-12-6 15:54:00 | 显示全部楼层 来自 河北廊坊
我上面的代码就是这个意思啊,这个时候用符号变量不方便,用单元数组比较好,我的q就是单元数组,只是你的单元数组有规律,所以我就一句话写了,可以自己写q,e也是自己定义的
  1. e=[51,42,33];
  2. q={'x1','y2','z4'};
  3. arrayfun(@(x)(assignin('base', q{x}, e(x))),1:length(e));
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-6 16:03:29 | 显示全部楼层 来自 韩国
主要不太明白最后一行怎么用,改了半天也不行。
这回可以了~再次感谢^^
回复 不支持

使用道具 举报

发表于 2010-12-6 17:08:22 | 显示全部楼层 来自 河北廊坊
8# luckyrhkr
1.这里主要是用了assignin函数,可以用eval去试一试
2.最后一行是用arrayfun实现向量化编程,可以用for循环去代替,这样好理解一些
3.关于arrayfun函数的用法,帮助文件里面有详细的例子介绍的
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-6 19:31:25 | 显示全部楼层 来自 韩国
恩,好我知道了。等把这个程序弄完了一定要好好补习下MATLAB~谢谢你的帮助
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-20 15:43 , Processed in 0.064428 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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