clear
t1='is 0 1 2.5';
t2='r1 1 0 2';
t3='e 1 2 1 0 0.5';
t4='r4 1 3 3';
t5='g 3 2 1 0 1';
t6='r2 2 0 0.4';
t7='r3 3 0 1';
for a=1:7
n=get(strcat('t',num2str(a)))
end
程序如上,为什么n得到的只是变量名如t1、t2等,而不是变量里的值呢,请问怎样解决?谢谢谢谢,我是新手,着急死了
n=get(strcat('t',num2str(a))) 写错了,是
n=strcat('t',num2str(a)),问题在哪里啊?怎么解决呢?
关于matlab变量赋值的问题
答案:1 悬赏:20
解决时间 2021-02-26 23:42
- 提问者网友:先森请一心
- 2021-02-26 12:18
最佳答案
- 二级知识专家网友:木子香沫兮
- 2021-02-26 12:42
你那么写,t1到t7是7个不同名字的变量,不能用你那种t加上数字的方法来识别变量名,
这跟变量在电脑中的存储形式有关,几乎没有哪种语言是这么干的。
通常的解决办法都是用数组。
而在matlab里,矩阵就是数组,不过由于字符串本身也是个字符组成的行向量(单行的矩阵),
所以如果多个字符串的话,也就是每行一个字符串,必须要求每行长度相同。
也就是说,如果你上面的字符串长度都相等,那你可以用
t(1,:)='......';
t(2,:)='......';
......
引用的时候用
t(a,:)就可以了。
不过通常多个字符串长度不等,那就会出错。
当然也可以用空格补齐,不过那样就改变字符串本身了。
所以通常用cell类型来解决,其实很简单,就是下标用{}而不是()括起来。
clear
t{1}='is 0 1 2.5';
t{2}='r1 1 0 2';
t{3}='e 1 2 1 0 0.5';
t{4}='r4 1 3 3';
t{5}='g 3 2 1 0 1';
t{6}='r2 2 0 0.4';
t{7}='r3 3 0 1';
for a=1:7
n=t{a} %我不明白这里你要干什么,get是获得对象的属性,参数应该是个句柄,所以应该不是你想的获取变量内容。不过你每次循环对n赋值,最后结果只是最后一次循环的,前面都覆盖了,也就是n最后等于t{7},这是要干什么啊?
end
这跟变量在电脑中的存储形式有关,几乎没有哪种语言是这么干的。
通常的解决办法都是用数组。
而在matlab里,矩阵就是数组,不过由于字符串本身也是个字符组成的行向量(单行的矩阵),
所以如果多个字符串的话,也就是每行一个字符串,必须要求每行长度相同。
也就是说,如果你上面的字符串长度都相等,那你可以用
t(1,:)='......';
t(2,:)='......';
......
引用的时候用
t(a,:)就可以了。
不过通常多个字符串长度不等,那就会出错。
当然也可以用空格补齐,不过那样就改变字符串本身了。
所以通常用cell类型来解决,其实很简单,就是下标用{}而不是()括起来。
clear
t{1}='is 0 1 2.5';
t{2}='r1 1 0 2';
t{3}='e 1 2 1 0 0.5';
t{4}='r4 1 3 3';
t{5}='g 3 2 1 0 1';
t{6}='r2 2 0 0.4';
t{7}='r3 3 0 1';
for a=1:7
n=t{a} %我不明白这里你要干什么,get是获得对象的属性,参数应该是个句柄,所以应该不是你想的获取变量内容。不过你每次循环对n赋值,最后结果只是最后一次循环的,前面都覆盖了,也就是n最后等于t{7},这是要干什么啊?
end
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯