liushuiwuxin 发表于 2009-4-29 21:33

求助:消息对话框inputdlg的问题

我想编写一输入对话框,可以直接在对话框中属于数据。只是我要输入的数据是2*t+t^2 其中t是变量。我的代码如下:
function my(t)
promrt={'请输入已知角U'}; name='Anter the trapezia Data';
numlines=1; defAns={'1/4*pi+2*pi*t'}; Resize='on';
R=inputdlg(promrt,name,numlines,defAns,'on');
U=str2num(R{1});
syms t;
save yizhijiao U; load yizhijiao.mat;
t=0.2; u=subs(U,t)
结果是出错。出错信息如下:
??? Error using ==> str2num
Requires string or character array input.

Error in ==> sym.double at 23
X = reshape(str2num(map2mat(char(maple('evalf',S(:),d)))),siz);

Error in ==> sym.subs at 67
if isempty(vars), NEWf = double(OLDf); return, end

Error in ==> subs at 60
r = subs(sym(f),varargin{:});

Error in ==> my at 13
u=subs(U,t)
求各位大侠帮帮忙看看如何能够完成这一目的。拜谢啦!!

[ 本帖最后由 ChaChing 于 2009-5-2 09:39 编辑 ]

liushuiwuxin 发表于 2009-4-29 22:08

刚自己弄出来了哈哈将str2num 换成char就可以了

这样的结果是可以出来, 可是当我要用lenght(U)求起长度的时候却是又出现错误了
我本是想length(U)=1的, 可所得结果却是按字符来算的 。例如U=1/4*pi+2*pi*t时,length(U)=13
该怎么解决这个问题呀?
我是想将U当做一个数组来计算他的长度滴。如U=时length(U)=2而U=1/4*pi+2*pi*t时length(U)=1。该怎么做呀?

[ 本帖最后由 ChaChing 于 2009-5-2 09:43 编辑 ]

liushuiwuxin 发表于 2009-5-1 22:18

将U=str2num(R{1})换成U=sym(R{1}),上面的问题就可以解决了。
可是这时候又出现问题了。在对话框里如只输入一个数据例如:2*t-2 是可以得出真确结果的。
可是要是输入两个数据例如:2*t-2   3*t   这样就出错了,得不出结果来。为什么呀?可否有其他的什么办法解决?

这个问题急待解决呀,还肯定那位高手不吝赐教一下呀!小弟在次再三拜谢啦!!

[ 本帖最后由 ChaChing 于 2009-5-2 09:46 编辑 ]

ChaChing 发表于 2009-5-1 23:38

回复 楼主 liushuiwuxin 的帖子

LZ的问题, 不知怎, 我理解的都较慢些! 刚才花些时间设断点看看
可能LZ用的东东个人较少使用, 或LZ写的个人不易进入状况, 或代沟!
首先针对1F说说
1.U=str2num(R{1})直接使用U=R{1};即可
2.LZ还是喜欢重覆使用相同变数代表不同东西, 如t一下是符号变数, 一下又是数字变数, 如此迟早会出错!

ChaChing 发表于 2009-5-1 23:48

回复 板凳 liushuiwuxin 的帖子

具体还是看不清LZ确实要什麽! 猜测LZ要的可能是多输入的例子
prompt = {'Enter matrix size:','Enter colormap name:'};
dlg_title = 'Input for peaks function'; num_lines = 1; def = {'20','hsv'};
answer = inputdlg(prompt,dlg_title,num_lines,def);
就可以length(answer)=2

[ 本帖最后由 ChaChing 于 2009-5-2 09:48 编辑 ]

liushuiwuxin 发表于 2009-5-2 21:45

首先,非常感激楼上的帮助,谢谢!!其次,我为我给楼上的带来的麻烦表示十二分的歉意,对不起,还请敬请见谅。我由于急需寻求这个问题的答案,所以我在表述问题的时候没能写到一起,还要麻烦你帮我整合,非常抱歉,还请见谅!
    我的问题是,我想编写一个输入对话框
promrt={'请输入数组A'}
name='Anter the trapezia Data';
R=inputdlg(promrt)
a=R{1}
m=length(a)
其中,输入的数组A一个关于符号变量t的数组。如我可以输入则结果可得m=3;若我输入,则结果可得m=1.也就是说我的m是为了检测我输到对话框里的那个数组的长度是多少。最要在于输入的是关于符号变量t的数组。

ChaChing 发表于 2009-5-2 23:17

我表达不够清楚, 6F是给了一种建议, 多栏位输入!
符号这东东少玩! 刚刚试了下! 试试下式是否LZ要的
promrt={'请输入数组A'}; name='Enter the trapezia Data';
R=inputdlg(promrt); a=sym(R{1});
m=length(a)

liushuiwuxin 发表于 2009-5-3 21:02

我有按7F的方式写过。只是这样写了后,只有当A=这类的一维数组的时候才可以,当A为A=这样的二维或三维等等数组的时候,就得不出结果了。或有出错信息出来

ChaChing 发表于 2009-5-3 22:21

回复 8楼 liushuiwuxin 的帖子

怪! 这个我试过! 输入没报错!?
>> promrt={'请输入数组A'}; name='Enter the trapezia Data';
R=inputdlg(promrt); a=sym(R{1});
m=length(a)

m =
   3

liushuiwuxin 发表于 2009-5-4 10:59

哦非常感谢楼上的帮助。我是直接在对话框中输入2*tt-2 t就不行了。输入就没问题了。呵呵呵谢谢啦!
页: [1]
查看完整版本: 求助:消息对话框inputdlg的问题