声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2333|回复: 9

[编程技巧] 求助:消息对话框inputdlg的问题

[复制链接]
发表于 2009-4-29 21:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想编写一输入对话框,可以直接在对话框中属于数据。只是我要输入的数据是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 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-4-29 22:08 | 显示全部楼层
刚自己弄出来了  哈哈  将str2num 换成char就可以了

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

[ 本帖最后由 ChaChing 于 2009-5-2 09:43 编辑 ]
 楼主| 发表于 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 编辑 ]
发表于 2009-5-1 23:38 | 显示全部楼层

回复 楼主 liushuiwuxin 的帖子

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

评分

1

查看全部评分

发表于 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 编辑 ]
 楼主| 发表于 2009-5-2 21:45 | 显示全部楼层
首先,非常感激楼上的帮助,谢谢!!其次,我为我给楼上的带来的麻烦表示十二分的歉意,对不起,还请敬请见谅。我由于急需寻求这个问题的答案,所以我在表述问题的时候没能写到一起,还要麻烦你帮我整合,非常抱歉,还请见谅!
    我的问题是,我想编写一个输入对话框
promrt={'请输入数组A'}
name='Anter the trapezia Data';
R=inputdlg(promrt)
a=R{1}
m=length(a)
其中,输入的数组A一个关于符号变量t的数组。如我可以输入[2*t  2-t  t]则结果可得m=3;若我输入[2^2],则结果可得m=1.也就是说我的m是为了检测我输到对话框里的那个数组的长度是多少。最要在于输入的是关于符号变量t的数组。
发表于 2009-5-2 23:17 | 显示全部楼层
我表达不够清楚, 6F是给了一种建议, 多栏位输入!
符号这东东少玩! 刚刚试了下! 试试下式是否LZ要的
promrt={'请输入数组A'}; name='Enter the trapezia Data';
R=inputdlg(promrt); a=sym(R{1});
m=length(a)
 楼主| 发表于 2009-5-3 21:02 | 显示全部楼层
我有按7F的方式写过。只是这样写了后,只有当A=[2*t]这类的一维数组的时候才可以,当A为A=[2*t  t-2 t]这样的二维或三维等等数组的时候,就得不出结果了。或有出错信息出来
发表于 2009-5-3 22:21 | 显示全部楼层

回复 8楼 liushuiwuxin 的帖子

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

m =
     3
 楼主| 发表于 2009-5-4 10:59 | 显示全部楼层
哦  非常感谢楼上的帮助。我是直接在对话框中输入2*t  t-2 t  就不行了。输入[2*t  t-2 t]就没问题了。呵呵呵  谢谢啦!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-19 04:14 , Processed in 0.067064 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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