doc
一般搜索帮助的话,会输入help ***
事实上,输入 doc ***
更加有效!
simplot
可以绘制像simulink里面scope一样的图形,具体可以参阅doc simplot
2009年4月4日星期六
2008年12月24日星期三
圣诞节到了,介绍几个好模块
1.Variable Transport Delay:
用于实现信号的动态延迟,两个输入,一个输入原始信号,另外一个输入信号延迟的时间T。
2.FM Modulator Passband:
用于实现通过输入信号的大小变化动态的改变输出信号的频率。
未完待续......
用于实现信号的动态延迟,两个输入,一个输入原始信号,另外一个输入信号延迟的时间T。
2.FM Modulator Passband:
用于实现通过输入信号的大小变化动态的改变输出信号的频率。
未完待续......
simulink图形中线条粗细和模块视图大小的讨论
如何调整simulink图形的线条和模块大小、粗细呢?
目前已知如下几种方法,供广大网友参考:
1.在simulink模型的format菜单上,最下面三个(我的是MATLAB7.0.1)都是关于display的,可以进行有限的设置;
2.simulink模型里面view菜单下,zoom in、zoom out 等可以放大缩小整个视图;
3.还是在simulink模型里面view菜单下,选项fit system to view,整个图都会变大变粗以适应屏幕大小,对应快捷键为 空格键;
4.在3中,如果选中了某个模块,则选项fit system to view会自动变成fit selection to view,选中的模块会变粗变大,但整体图会出现比例不协调的现象。
感谢ljelly,后两种方法参考了ljelly在simwe上的回答,具体参见:
http://forum.simwe.com/thread-860177-1-1.html
目前已知如下几种方法,供广大网友参考:
1.在simulink模型的format菜单上,最下面三个(我的是MATLAB7.0.1)都是关于display的,可以进行有限的设置;
2.simulink模型里面view菜单下,zoom in、zoom out 等可以放大缩小整个视图;
3.还是在simulink模型里面view菜单下,选项fit system to view,整个图都会变大变粗以适应屏幕大小,对应快捷键为 空格键;
4.在3中,如果选中了某个模块,则选项fit system to view会自动变成fit selection to view,选中的模块会变粗变大,但整体图会出现比例不协调的现象。
感谢ljelly,后两种方法参考了ljelly在simwe上的回答,具体参见:
http://forum.simwe.com/thread-860177-1-1.html
2008年12月18日星期四
simulink对rising(上升沿)的定义
众所周知,上升沿(rising)的意思就是信号以一个脉冲的形式突然上升。但是,最近我发现simulink好像不这样认为~~
假如simulink也是这么认为的,那么下面这个模块的输出应该显示Triggered Subsystem在仿真的10s内被触发9次:
但是,遗憾的是,示波器的输出显示,只被触发了一次,而且是在从0上升到1的时候被触发的:
那么这是怎么回事呢,这也许就是我们和simulink对上升沿的理解不同,simulink认为,只有从0到1的上升沿才叫上升沿,为什么这么说呢,上述问题又如何解决呢?
我们在Digital Clock和Triggered Subsystem之间加一个Monostable即可:
这时候,相当于每次都让Triggered Subsystem从0到1触发,那么输出的结果呢?可见,被触发了9次,目的达到了~~
2008年12月17日星期三
Matlab GUI中嵌入到窗口内的waitbar
最近用到了waitbar,但是Matlab的waitbar总游离于主窗口之外,网上有人介绍放入主窗口的办法,事实上就是精简Matlab本身的waitbar,但是这仍然不能满足我的要求,主要是我的界面还要另外plot新的figure,而patch不检查当前绘图区域,所以如果在waitbar绘制过程中点击了plot出来的figure或者别的figure,那么进度条r就会在当前的figure下画,问题很让人头疼
关于patch,按照Matlab说法,它不像其他高级绘图命令,patch不检查figure和axes的所有权,只是简单的向当前axes上画patch,如果有多个figure或者axes,像我这种情况,麻烦就来了
所以在使用patch前,必须告诉Matlab,把要画的figure和axes说清楚。这样,基本就实现了完美的嵌入式进度条显示:
首先在GUI窗口中找出一块空地,放上一个axes,起个名字,我起的名字是TheWaitBar,然后,如果某一时刻触发,使waitbar开始画图(比如点了开始计算的OK键),那么加入下面一段话的执行:
TheEndTime = 6000; % 自己定义的循环次数
h = get(handles.TheWaitBar,'title');
set(h,'String','Please Wait...');
for t = 1:TheEndTime
MyWaitBar(t/TheEndTime,handles);
V(t) = sin(t); % 举个计算的例子
end
cla;
set(h,'String',''); % 打扫战场
其中的handles就是GUI中的handles。
调用下面自己写的waitbar函数:
function MyWaitBar(t,handles)
if nargin == 2
set(0,'CurrentFigure',handles.figure1); % 告诉Matlab当前的绘图窗口
set(handles.figure1,'CurrentAxes',handles.TheWaitBar); % 告诉Matlab当前的绘图区域
end
x = t*100;
xpatch = [0 x x 0];
ypatch = [0 0 1 1];
patch(xpatch,ypatch,'b','EdgeColor','b','EraseMode','none');
drawnow;
其中handles.figure1是当前GUI主窗口(也就是TheWaitBar所在窗口的句柄),如果你有多个GUI窗口,在程序里写个handles不加分号看一看TheWaitBar在哪个里就可以了。这样的话,如果你有多个figure,无论你如何用鼠标选择当前窗口,程序都会在TheWaitBar控件上绘制图形进度条。
关于patch,按照Matlab说法,它不像其他高级绘图命令,patch不检查figure和axes的所有权,只是简单的向当前axes上画patch,如果有多个figure或者axes,像我这种情况,麻烦就来了
所以在使用patch前,必须告诉Matlab,把要画的figure和axes说清楚。这样,基本就实现了完美的嵌入式进度条显示:
首先在GUI窗口中找出一块空地,放上一个axes,起个名字,我起的名字是TheWaitBar,然后,如果某一时刻触发,使waitbar开始画图(比如点了开始计算的OK键),那么加入下面一段话的执行:
TheEndTime = 6000; % 自己定义的循环次数
h = get(handles.TheWaitBar,'title');
set(h,'String','Please Wait...');
for t = 1:TheEndTime
MyWaitBar(t/TheEndTime,handles);
V(t) = sin(t); % 举个计算的例子
end
cla;
set(h,'String',''); % 打扫战场
其中的handles就是GUI中的handles。
调用下面自己写的waitbar函数:
function MyWaitBar(t,handles)
if nargin == 2
set(0,'CurrentFigure',handles.figure1); % 告诉Matlab当前的绘图窗口
set(handles.figure1,'CurrentAxes',handles.TheWaitBar); % 告诉Matlab当前的绘图区域
end
x = t*100;
xpatch = [0 x x 0];
ypatch = [0 0 1 1];
patch(xpatch,ypatch,'b','EdgeColor','b','EraseMode','none');
drawnow;
其中handles.figure1是当前GUI主窗口(也就是TheWaitBar所在窗口的句柄),如果你有多个GUI窗口,在程序里写个handles不加分号看一看TheWaitBar在哪个里就可以了。这样的话,如果你有多个figure,无论你如何用鼠标选择当前窗口,程序都会在TheWaitBar控件上绘制图形进度条。
订阅:
博文 (Atom)