matlab运行出现Undefined function or variable 't'.

clck1=[];%存放火焰锋面最前端的坐标pic=dir('I:\11%\tif\*.tif');%取文件的数量:numa=size(pic);num=a(1);%图像... clc
k1=[];%存放火焰锋面最前端的坐标
pic=dir('I:\11%\tif\*.tif');%取文件的数量:num
a=size(pic);
num=a(1);
%图像处理
for k=1:num %n为图片数量,即A的元素个数
im(:,:,:,k)=imread(strcat('I:\11%\tif\',pic(k).name));
M(k)=getframe
bw=im2bw(im(1:400,:,:,k),0.2);%直接用matlab自带函数进行二值化处理
figure(1),imshow(bw)
bwAreaOpenBW=bwareaopen(bw,1);
se=strel('disk',10);
closeBW=imclose(bwAreaOpenBW,se);
bw1=bwperim(closeBW,18);
[i j]=find(bw1>0.5);
I=max(j);
k1=[k1 I];
end
V=[];%存放速度
L=[];%存放两个锋面差
L1=[];%存放火焰厚度(从点火点到火焰锋面的距离)
m=[]
num1=numel(k1)-1
%速度运算
for n=3:num1
m(n)=k1(n+1)-k1(n);
if m(n)>=0;
l=m(n)/512*0.8;
L=[L l];
l1=k1(n)/512*0.8;
L1=[L1 l1];
t=1/1000;
v=L/t;
V=[V,v];
else m(n)<0;
m(n)=0;
l=m(n)/512*0.8;
L=[L l];
l1=k1(n-1)/512*0.8;
L1=[L1 l1];
t=1/1000;
v=L/t;
V=[V,v];
end
end
imshow(V);
%作图
I1=numel(v)
t1=t:t:t*I1;
I2=sort(L1)
A=[t1;v;I2];
I3=A';
K=find(I3(:,2)>=50)
I3(K,2)=50
X1=I3(:,1);
Y1=I3(:,2);
Z1=I3(:,3);
figure(1),plot(Z1,Y1,'-*r');
figure(2),plot(X1,Y1,'-*r');
figure(3),plot(X1,Z1,'-*r');
figure(4),plot3(X1,Z1,Y1,'-*r');
展开
 我来答
yesyes科
2020-02-25 · TA获得超过2.6万个赞
知道答主
回答量:608
采纳率:0%
帮助的人:10.1万
展开全部

1、首先打开电脑上的“matlab”软件,软件主界面如图所示,在命令行窗口输入“function”。

2、将鼠标移动function处,点击鼠标右键,可以看到“关于所选内容的帮助”。

3、接着点击箭头处按钮,即可查看function的具体使用方法,方框处为function的使用格式。

4、点击左上方箭头处的“新建”按钮,新建一个函数脚本文件,点击方框处“脚本”即可。

5、左边方框处的output为函数文件的输出参数,右边方框的input为函数文件的输入参数,f为函数名称,中间输入函数的具体内容,结尾需要加上end。

6、接着在命令行输入[y,a,b]=f(5,2),输入参数为具体的数值,点击“enter”键即可运行程序。

wfc1102
推荐于2017-10-03 · TA获得超过495个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:441万
展开全部
看你的程序挺有意思的,学习了。
不过,你确信是Undefined function or variable 't'.而不是Undefined function or variable 'v'.
程序中变量t是没有问题的,至少要出现问题,也应该是变量v出现。
因为,程序中:
-----------------------
num1=numel(k1)-1
%速度运算
for n=3:num1
.....
end
%作图
I1=numel(v)
......
------------------------
当这里的for循环没有被执行时,t和v都是没有值的,被引用时就会出现Undefined function or variable 'XX'的错误。
程序的问题应该就出现在这里,当num1<3,也即k1<4也即你的tif图片个数<4时就会出错。
你看看是不是这样。
另外,你的这些tif图片是批处理产生的吧,图片的数组大小都是一样的。不然im(:,:,:,k)=imread(strcat('I:\11%\tif\',pic(k).name));未定义就使用变量(im)很容易因为图片数组大小不一致而出错。
更多追问追答
追问
se=strel('disk',10);
closeBW=imclose(bwAreaOpenBW,se);
bw1=bwperim(closeBW,8);
[i j]=find(bw1>0.5);

你能不能帮我看下8,0.5这些参数有什么用,怎么选取?
追答
懒省事了LZ,自己help bwperim查看下命令不就知道了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
doudou_lyc
2012-03-24 · TA获得超过314个赞
知道答主
回答量:132
采纳率:0%
帮助的人:118万
展开全部
根据错误提示:
??? Undefined function or variable "tau".
Error in ==> CC_Method at 58
你的程序运行到最后一行报错,
原因 是 变量"tau"没有定义。
大概看了下你的程序,在这里用到"tau",
if delta_S_mean(t)<delta_S_mean(t+1)
tau=t;
break
end
如果到最后提示"tau"没有定义,应该是这个条件(delta_S_mean(t)<delta_S_mean(t+1)) 没有得到满足,所以tau=t这一句没有得到执行。

要消除这个错误,你可以在这里设个断点看看,是否在计算delta_S_mean时有误,使得这个条件始终不满足。或者在开始的时候设置一个"tau"的初始值,如一开始定义"tau=2",在最后不会出现没有定义的问题,但是计算结果可能不正确。
最好还是多看错误提示,设断点进行单步调试找到问题解决之。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式