声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: jennychung

[编程技巧] sym变量如何显示的问题

[复制链接]
发表于 2007-4-8 18:11 | 显示全部楼层
原帖由 jennychung 于 2007-4-8 18:10 发表
应该运行了case 1啊
因为正确显示了w的值啊.
就是不显示h的值,老是报错
??? Error using ==> set
Conversion to double from sym is not possible.

Error in ==> feixianxing>pushbutton3_Ca ...


知道了,你应该把syms h语句放在switch语句之前,试试吧。我不能运行,只能用眼看程序,并猜了,呵呵

[ 本帖最后由 eight 于 2007-4-8 18:12 编辑 ]
回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2007-4-8 18:15 | 显示全部楼层
还是不对啊
郁闷啊
到底是什么问题啊

还是那个错啊
??? Error using ==> set
Conversion to double from sym is not possible.

Error in ==> feixianxing>pushbutton3_Callback at 604
set(findobj('tag','edit12'),'string',z);

Error in ==> gui_mainfcn at 75
        feval(varargin{:});

Error in ==> feixianxing at 42
    gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback.
 楼主| 发表于 2007-4-8 18:19 | 显示全部楼层
谢谢了
找到问题了
多亏你啊
 楼主| 发表于 2007-4-8 18:29 | 显示全部楼层
还有
edit text里只能显示一行数据吗
我的h有里2个数据,怎么显示啊?

[ 本帖最后由 jennychung 于 2007-4-8 18:30 编辑 ]
发表于 2007-4-8 19:08 | 显示全部楼层
原帖由 jennychung 于 2007-4-8 18:29 发表
还有
edit text里只能显示一行数据吗
我的h有里2个数据,怎么显示啊?



参考这个帖子:列表框如何分段显示
 楼主| 发表于 2007-4-8 19:17 | 显示全部楼层
我现在要在edit text里显示h的值
h有时是2个数据,有时是1个数据
我要他能自己显示啊
发表于 2007-4-8 19:21 | 显示全部楼层
原帖由 jennychung 于 2007-4-8 19:17 发表
我现在要在edit text里显示h的值
h有时是2个数据,有时是1个数据
我要他能自己显示啊



设置max属性为2
 楼主| 发表于 2007-4-8 19:28 | 显示全部楼层
还有个问题
我不用GUI运行
就在matlab里运行如下代码的话是能出来图的

syms w w1 x y A U Gn h1 h;
K=input('K=')
T1=input('T1=')
T2=input('T2=')
k=2;e0=1;  %gai
for A=1.1:0.1:20;
    x=2*k/pi*(asin(e0/A)+e0/A*sqrt(1-(e0/A)^2));
    y=0;plot(-1/x,y,'m')
    hold on
end
num=[K];den=conv(conv([1 0],[T1 1]),[T2 1]);  
G=tf(num,den);
w1=1.8:0.1:20;
nyquist(G,w1)

但是在GUI里运以下程序是出不来图的,但也没显示有错误啊?
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
hk1=findobj('tag','edit4');K=str2num(get(hk1,'string'));
ht1=findobj('tag','edit5');T1=str2num(get(ht1,'string'));
ht2=findobj('tag','edit6');T2=str2num(get(ht2,'string'));
hlei1=findobj('tag','popupmenu2');lei1=get(hlei1,'value');
axes(handles.axes1);
switch lei1
    case 1
        ks=2;e0=1;  %gai
        for A=1.1:0.1:20;
            x=2*ks/pi*(asin(e0/A)+e0/A*sqrt(1-(e0/A)^2));
            y=0;
            plot(-1/x,y,'m');
            hold on
        end
        num=[K];den=conv(conv([1 0],[T1 1]),[T2 1]);  
        G=tf(num,den);
        w1=1.8:0.1:20;
        nyquist(G,w1);hold off;        
        %A w
        syms h
        w=1/sqrt(T1*T2);
        Gn=K/(j*w*(T1*j*w+1)*(j*w*T2+1));
        U=real(Gn);
        U=vpa(U,4);
        h1=-1/(2*ks/pi*(asin(e0/h)+e0/h*sqrt(1-(e0/h)^2)))-U;
        [h]=solve(h1,h);
end
ping1=num2str(w);z=subs(h);
set(findobj('tag','edit11'),'string',ping1);
set(findobj('tag','edit12'),'string',z);
发表于 2007-4-8 19:59 | 显示全部楼层
原帖由 jennychung 于 2007-4-8 19:28 发表
还有个问题
我不用GUI运行
就在matlab里运行如下代码的话是能出来图的

syms w w1 x y A U Gn h1 h;
K=input('K=')
T1=input('T1=')
T2=input('T2=')
k=2;e0=1;  %gai
for A=1.1:0.1:20;
    x=2*k/p ...



自己设置断点调试一下吧
 楼主| 发表于 2007-4-17 14:54 | 显示全部楼层
原帖由 eight 于 2007-4-8 16:12 发表



help subs, the answer is: h = subs(h)

subs()不是替换嘛
这里什么作用啊?
发表于 2007-4-17 15:18 | 显示全部楼层
原帖由 jennychung 于 2007-4-17 14:54 发表

subs()不是替换嘛
这里什么作用啊?



是替换,准确说在这里是起sym到double的转换,但是前提是结果中不含有未知的符号变量(即原方程的所有符号变量均是未知量并且在求解过程中消去)。
发表于 2007-4-18 19:31 | 显示全部楼层
楼主,你怎么改的 ?
set(get(handles.edit12,'string'), z); 这样改行不行。
新手,有类似问题,学习一下

[ 本帖最后由 mst-tum 于 2007-4-18 19:35 编辑 ]
发表于 2007-4-20 09:31 | 显示全部楼层

我看此例后,问一个比较笨的问题

我在matlab上执行lz如下代码,怎么有错误?

code:
syms h
h1=-1 /( 4*3/(pi*h)*sqrt(1-(1/h)^2) ) - 7.07;
[h]=solve(h1,h)


error:

??? Error using ==> solve
Too many input arguments.

Error in ==> sym.solve at 49
[varargout{1:max(1,nargout)}] = solve(S{:});

Error in ==> mysolve_1 at 3
[h]=solve(h1,h)

怎么解决呢

谢了
发表于 2007-4-20 09:59 | 显示全部楼层
原帖由 gloryzhu 于 2007-4-20 09:31 发表
我在matlab上执行lz如下代码,怎么有错误?

code:
syms h
h1=-1 /( 4*3/(pi*h)*sqrt(1-(1/h)^2) ) - 7.07;
[h]=solve(h1,h)


error:

??? Error using ==> solve
Too many input arguments.

Er ...


可能不同的matlab版本语法有些区别,你自己 help solve 看看你那个版本的语法吧
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-21 08:45 , Processed in 0.063413 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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