matlab循环语句中如何编一个程序来知道try...catch循环所跳过的数据有多少个?

您的网站因未备案或涉及违规被禁止访问,请及时联系实际接入商办理备案.matlab中while用法_搜索_中华文本库
matlab 基本语句 1.循环语句 for for i=s1:s3:...2.循环语句 while 例:sum=0;i=1; while(i&=...如果需要反复执行某些程序段落,可以使用循环结构。 1...
挺好的——matlab循环语句_数学_自然科学_专业资料。...2.循环语句 while 例:sum=0;i=1; while(i&=...如果需要反复执行某些程序段落,可以使用循环结构。 1...
matlab中 正弦余弦正切余切的画法 以及For while的用法_工学_高等教育_教育专区。matlab 基本用法实验二 Matlab 的编程及图形绘制实验方法、 实验方法、步骤及结果测...
Matlab的基本用法_理学_高等教育_教育专区。读取图像:用 imread 函数读取图像文件...包括 if for while break continue switch 语句块 return try...catch if ...
Matlab使用技巧_工学_高等教育_教育专区。Matlab-scope 示波器菜单调用命令 set(...或者是直接保存出现如下信息: Error while saving model 'untitled'using the ...
分别使用 for 循环语句和 while 循环语句找出最小的 n 值,使得 n!&10100,并求出 n!。 MATLAB 程序代码如下: s=1; for n=1:100 if s&10100; n=n-1...
Matlab使用简介_计算机软件及应用_IT/计算机_专业资料。Matlab 软件的使用 Matlab...1. 循环结构 Matlab 的循环结构可用 for 语句和 while 语句来实现。 1)for ...
[x,x+4*pi,-2,2]); grid on while 1 if x&max(t) end x=...Matlab 中使用 Plot 函数动态画图方法总结本文来自: MATLAB 爱好者论坛(MATLABFAN...
2、学习 MATLAB 的基本使用方法; 3、熟悉 plot 和 stem 等绘图函数的用法。 ...其中比较常用的有:if/elseif/else, switch/case/otherwise, while, for,end,...
matlab第三次作业_计算机软件及应用_IT/计算机_专业...(n) 实现用 while 循环语句实现求 n 阶乘的函数...使用 switch+case 语句编写如下函数 jijie=myfun9(...您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
Matlab笔记之十一----有关M文件编写.doc 14页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:100 &&
Matlab笔记之十一----有关M文件编写.doc
你可能关注的文档:
··········
··········
Matlab笔记之十一----???◎#有关M文件编写#◎for循环结构:forx=array(commands)endwhile循环结构:whileexpression(commands)enda(1)=1a(2)=1i=2whilea(i)&=10000a(i+1)=a(i-1)+a(i)i=i+1ia(i)单分支:ifexpression(commands)end双分支:ifexpression??(commands1)else??(commands2)end多分支:ifexpression1???(commands)elseifexpression2???(commands)…………else??(commands)end如果判决条件expression为一个空数组,MATLAB认为条件为假(false)。表达式有时由多个逻辑子表达式组成的,MATLAB将尽可能少地检测这些子表达式的值。例如,表达式为:(子表达式1|子表达式2),当MATLAB检测到子表达式1的值为真时,它就认为表达式为真,而不再对子表达式2进行检测。又如,表达式为:(子表达式1&子表达式2),当MATLAB检测到子表达式1的值为假时,它就认为表达式值为假的,从而跳过该结构。if指令判决和break指令的配合使用,可以强制终止for循环或while循环。switch-case结构:switchex???????ex为一标量或字符串。casetest1(commands1)????当ex等于test1时,执行组命令1,然后跳出该结构。casetest2……casetestk(commandsk)????当ex等于testk时,执行组命令k,然后跳出该结构。otherwise???????otherwise指令可以不存在(commands)??????表达式不等于前面所有检测值时,则执行该组命令。end1当遇到switch结构时,MATLAB将表达式的值依次和各个case指令后面的检测值进行比较。如果比较结果为假,则取下一个检测值再比较,一旦比较结果为真,MATLAB将执行相应的一组命令,然后跳出该结构。如果所有的比较结果都为假,即表达式的值和所有的检测都不等,MATLAB将执行otherwise后面的一组命令。由此可见上述结构保证了至少有一组命令会得到执行。2switch指令后面的表达式应为一个标量或者为一个字符串。对于标量形式的表达式,比较这样进行:表达式==检测值i。而对于字符串,MATLAB将调用函数strcmp来实现比较:strcmp(表达式,检测值i)。3case指令后面的检测值不仅可以为一个标量值或一个字符串,还可以为一个元胞数组。如果一个检测值是一个元胞数组,MATLAB将把表达式的值和该元胞数组中的所有元素进行比较;如果元胞数组中某个元素和表达式的值相等,MATLAB认为此次比较结果为真,从而执行与该检测值相应的一组命令。fori=1:10a{i}=89+ib{i}=79+ic{i}=69+id{i}=59+iendc=[d,c]Name={'Jack','Marry','Peter','Rose','Tom'};Mark={72,83,56,94,100};Rank=cell(1,5);%创建一个含5个元素的架构数组S,它有三个域S=struct('Name',Name,'Marks',Mark,'Rank',Rank);fori=1:5switchS(i).Markscase100%得分为100时??S(i).Rank='满分';???%列为‘满分’等级casea?????????????????%得分在90和99之间??S(i).Rank='优秀';???%列为‘优秀’等级caseb?????????????????%得分在80和89之间??S(i).Rank='良好';???%列为‘良好’等级casec?????????????????%得分在60和79之间??S(i).Rank='及格';???%列为‘及格’等级Otherwise??????????????%得分低于60S(i).Rank='不及格';??%列为‘不及格’等级endend???????????????????????%将学生姓名,得分,登记等信息打印出来disp(['学生姓名','得分','等级']);disp('')fori=1:5disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]);try-catch结构:try(commands1)组命令1总被执行。若正确,则跳出此结构。catch(commands2)仅当组命令1出现执行错误,组命令2才被执行。e
正在加载中,请稍后...后使用快捷导航没有帐号?
查看: 14311|回复: 15
注册时间阅读权限10最后登录在线时间308 小时贡献值0 积分273分享好友记录日志相册UID22920
正式滴友, 积分 273, 距离下一级还需 227 积分
水晶1629 心级273 精华1主题帖子
本帖最后由 gsc07 于
00:52 编辑
3.2 Psychtoolbox-3教程之搭建实验测试平台程序
很多学心理学的同学下定决心要学Matlab其实很大一部分原因是想学如何使用Psychtoolbox-3(PTB-3)编写实验程序。但想要使用PTB-3写刺激程序,特别是稍微复杂一些的实验程序并没有想象中的那么简单。对于Matlab中一些基础的知识要掌握的比较扎实之后写起程序才能游刃有余。
可能很多童鞋一上来就拿着PTB-3的函数说明看起来,每个函数都能看懂,但PTB-3编程却有个很麻烦的地方就是很多函数使用起来并不直观,总是要先确定屏幕,打开一个窗口,然后将这个窗口的指针作为函数的传入参数放进去才能有效果。最让人不能忍的是刚开始的时候打开窗口出错了,窗口一般是不会自动关闭的。一般的做法都是ctrl+alt+del启动任务管理器,然后从应用程序中将Matlab关掉,再重新打开Matlab...如此的噩梦我经历过不少次。(虽然之后知道一些小窍门来调试,但还是挺麻烦的)
为了很好的展示这些函数,并且能给大家养成编写程序的好习惯,我这边用一些简单的方法搭建了一个PTB-3的函数测试平台或者叫做实验程序模板,其中也考虑到了一些实验程序中途出错的处理。
3.2.1 实验测试平台程序简单介绍
对于简易的实验程序,一般需要包括实验参数的设置,实验图片的预加载,实验刺激流程以及最后的数据存储。由于刚开始学习PTB-3工具箱,可以先将数据存储放到后面一些处理。所以在这个实验平台中主要集成了前三个内容。
基础平台包含四个函数,分别是
MainProgram.m
这是主程序,主要用来确定显示屏幕,打开窗口,调用初始化数据函数以及实验流程函数等等功能,也就是用来调控整个程序的。这个程序在我们学习PTB-3不需要怎么修改,只要调用就好。
程序如下:
function MainProgram(ExperimentFun,varargin)
global data
%% 判断传入参数
if nargin == 0
& & error('请传入一个实验函数!');
elseif nargin == 1
& & SetPictureFun = @(x) NaN;
elseif nargin == 2
& & SetPictureFun = varargin{1};
else
& & error('传入的参数过多!');
end
%% 清屏
clc
%% 生成实验数据
data = InitData();
%% 设置窗口参数
AssertOpenGL
scrnNum = max(Screen('Screens'));
%% 开窗口
window = Screen('OpenWindow',scrnNum,data.backgroundcolor);
Screen('BlendFunction', window, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Screen('Preference', 'TextAlphaBlending', 1);
%% 隐藏鼠标
HideC
%% 设置图片
try
& & picPoi = SetPictureFun(window);
catch ME
& & sca();
& & rethrow(ME);
end
%% 运行程序
try
& & ExperimentFun(window,picPoi);复制代码catch ME
& &sca();
& &rethrow(ME);
end
%% 显示鼠标
ShowC
%% 关闭窗口
Screen('CloseAll');复制代码(可能是由于bug,这块在一个函数框里面写不下那么多,就分成两块了,但这两块是同一个函数内的,不要分成2部分)
InitData.m
这是初始化实验数据的函数,实验的参数可以写在这个文件里面,比如实验中背景颜色,实验重复的次数,图片的大小什么的。这些内容需要写到一个变量名叫做data的结构体中。比如data.repeatTimes = 10; 这些参数在后面的写实验流程中将会用到。需要的时候可以往这个里面添加数据,不需要设置参数的时候可以不用到这个文件。
程序如下:
function data = InitData()
data.backgroundcolor = 128; % 背景颜色
%% 下面可以设置自己程序需要的参数
%...
%...复制代码
注意:在这个函数中有一个默认的参数data.backgroundcolor = 128;这个参数在Mainprogram.m中使用,是用来设置背景的颜色,所以不要删除这个参数,如果有需要,可以修改这个参数的值,其中0表示黑色,255表示白色,中间的数值表示不同的灰度。当然也可以改成彩色背景,比如data.backgroundcolor = [255,0,0]; 这个时候背景就编程红色了。后面的这个数组就是RGB颜色,具体有关色彩的表示我会在后面说。
这个函数是用来预加载图片。在PTB-3中,为了让图片呈现的更快一些,首先会先把这个图片读到内存中,并且会返回一个类似于指针的整数,在呈现的图片的时候就会用到这个东西。所以这个函数就是用来将你实验中所需要的所有图片都先放到内存中。由于这个函数是动态加载的,也就是说我们在学PTB-3的时候可能不同的实验程序,需要的图片不一样,所以这块函数也是不一样。所以这个函数可以有多个,根据需要去调用就好。下面的这个只是一个样例。这个函数的函数名可以随意取,比如SetPic1,SetPic_Demo等等,但要保证函数名要和这个m文件的文件名保持一致,并且在程序的第一行要加global data 下面就可以根据自己需要来编写了。所有需要的图片指针都必须存到一个叫picPoi的结构体中。
程序如下:
function picPoi = SetPic(window)
global data % 这个是获取实验参数的,在每个函数中都要加这么一句
% 下面这块每个方法可以不同,这块是用来做一个例子。
picture = uint8(255*rand(100,100)); % 生成一个100*100的噪音图
picPoi.rand = Screen('MakeTexture', window, picture); % 将这个噪音图放到内存中,并返回给picPoi.rand复制代码
Experiment.m
这个函数是用来编写实验流程的,也就是说图片在什么时候出现,在什么时候消失,被试的按键信息如何记录等等。这部分也就是实验程序的核心,当然我们也能在这个函数中去测试PTB-3函数。当然这个函数和SetPic一样,也是动态加载,所以可以有多个,当然要求文件名要和函数名要相同,函数的参数必须有两个,第一个是窗口指针,一个是图片指针结构体,第一行需要加 global data ,后面就自己发挥吧。这里我写个样例
程序如下:
function Experiment(window,picPoi)
global data
for i = 1:5&&% 循环五遍
& & Screen('DrawTexture',window,picPoi.rand); % 将刚才生成的噪音图片放在缓存中
& & Screen('Flip',window);&&% 将缓存中的内容呈现出来
& & WaitSecs(0.5); % 停留0.5秒(也就是呈现0.5秒)
& & Screen('Flip',window);&&% 将图片清楚掉(因为从上一个Flip之后没有往缓存中放内容,所以这里把缓存内容呈现出来,就相当于清掉之前呈现的图片)
& & WaitSecs(0.5);&&% 停留0.5秒
end复制代码
在完成了上述的几个步骤后,一个简单的实验程序就已经完成了。在完成这些内容后,只需要在command window中输入下面内容就可以看到一幅噪音图片一闪一闪的了。
MainProgram(@Experiment,@SetPic);复制代码
因为刚才我们说了Experiment这个函数和SetPic这个函数是动态加载的,所以在这里括号里面的参数就可以变了。当然如果在实验程序中并不需要加载图片,那么可以直接不写后面那个参数。
MainProgram(@Experiment);复制代码
比如你又写了一个其它的实验流程函数叫做ExpFun,将下面的程序写到一个叫ExpFun.m的文件中。
程序如下:
function ExpFun(window,picPoi)
global data
dispStr = '欢迎参加我们的实验';
[width, height] = Screen('WindowSize', window);
Rect = Screen('TextBounds', window, dispStr);
Screen('DrawText', window, dispStr, (width-Rect(3))/2, (height-Rect(4))/2);
Screen('Flip',window);
WaitSecs(5);复制代码
那么这个时候你可以选择调用这个函数
MainProgram(@ExpFun);复制代码
这样就可以看到在屏幕中央出现欢迎参加我们的实验的字样,五秒钟后跳出。
1. 可能在实验流程的函数中并没用用到data以及picPoi,这个时候matlab会出现提示将这些删了,但最好不要删,因为在这个实验平台程序中会给实验流程函数传picPoi,如果这里将这些删掉,会导致程序报错。
2. 在动态调用函数时,需要在函数名前加@,这里需要注意一下,不添加会出错。
在后面的讲解中就会围绕这个环境去将,也就是说以后会写很多很多实验流程函数,然后使用主函数去调用这些实验流程函数就可以看到效果。
附件: 你需要才可以下载或查看附件。没有帐号?
总评分:&水晶 + 1&
终于能将cnt处理后的数据写成avg文件了。。。给力哇~~
注册时间阅读权限5最后登录在线时间146 小时贡献值0 积分69分享好友记录日志相册UID30553
新滴友, 积分 69, 距离下一级还需 11 积分
水晶3791 心级69 精华0主题帖子
灰常感谢……………………
宁愿笑着流泪,不愿哭着后悔!!!
注册时间阅读权限10最后登录在线时间696 小时贡献值0 积分305分享好友记录日志相册UID737
正式滴友, 积分 305, 距离下一级还需 195 积分
水晶268 心级305 精华0主题帖子
!机会只会垂青于有准备的人!
!努力可以改变很多,比如说,命运!
注册时间阅读权限10最后登录在线时间60 小时贡献值0 积分80分享好友记录日志相册UID30656
正式滴友, 积分 80, 距离下一级还需 420 积分
水晶176 心级80 精华0主题帖子
为什么我运行不起来,总是报错
Error in ==& MainProgram at 21
window = Screen('OpenWindow',scrnNum,data.backgroundcolor);
??? Input argument &window& is undefined.
Error in ==& ExpFun at 4
[width, height] = Screen('WindowSize', window);
??? Input argument &window& is undefined.
注册时间阅读权限30最后登录在线时间69 小时贡献值0 积分148分享好友记录日志相册UID25348
水晶574 心级148 精华0主题帖子
澹宁 发表于
为什么我运行不起来,总是报错
Error in ==& MainProgram at 21
已经告诉你了啊,要定义window
注册时间阅读权限1最后登录在线时间1 小时贡献值0 积分1分享好友记录日志相册UID35225
新新滴友, 积分 1, 距离下一级还需 29 积分
水晶5 心级1 精华0主题帖子
师兄,可否发我一份 , 谢谢!
注册时间阅读权限1最后登录在线时间9 小时贡献值0 积分15分享好友记录日志相册UID21021
新新滴友, 积分 15, 距离下一级还需 15 积分
水晶118 心级15 精华0主题帖子
膜拜郭老师!
注册时间阅读权限10最后登录在线时间242 小时贡献值0 积分298分享好友记录日志相册UID33825
正式滴友, 积分 298, 距离下一级还需 202 积分
水晶837 心级298 精华0主题帖子
难得的好教程~感谢LZ的努力
try my best
注册时间阅读权限5最后登录在线时间14 小时贡献值0 积分33分享好友记录日志相册UID40717
新滴友, 积分 33, 距离下一级还需 47 积分
水晶123 心级33 精华0主题帖子
谢谢楼主的良心出品
注册时间阅读权限1最后登录在线时间0 小时贡献值0 积分1分享好友记录日志相册UID43737
新新滴友, 积分 1, 距离下一级还需 29 积分
水晶7 心级1 精华0主题帖子
谢谢大神QAQ
Medal No.1
Medal No.1
Medal No.2
Medal No.2
Medal No.3
Medal No.3
Powered by
Template By
Comsenz Inc.

我要回帖

更多关于 matlab循环语句 的文章

 

随机推荐