Matlab 怎样使每个函数的结果都输出呢function [breakpoint] = TopDown( T,left,right,max_error)small_T=T(left:right);best_so_far=inf;n=length(small_T);for i=2:n-1error_split=split(small_T,i);if error_splitmax_error)breakpoint=TopDown(T,left
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/16 04:40:44
Matlab 怎样使每个函数的结果都输出呢function [breakpoint] = TopDown( T,left,right,max_error)small_T=T(left:right);best_so_far=inf;n=length(small_T);for i=2:n-1error_split=split(small_T,i);if error_splitmax_error)breakpoint=TopDown(T,left
Matlab 怎样使每个函数的结果都输出呢
function [breakpoint] = TopDown( T,left,right,max_error)
small_T=T(left:right);
best_so_far=inf;
n=length(small_T);
for i=2:n-1
error_split=split(small_T,i);
if error_splitmax_error)
breakpoint=TopDown(T,left,breakpoint,max_error);
end
if (errorsplit(T(breakpoint+1:right))>max_error)
breakpoint=TopDown(T,breakpoint,right,max_error);
end
end
我想把所有的 breakpoint 都输出 但是很显然这样的话 就会只输出最后一个 前面的都覆盖了 能不能 输出一个向量呢
function [error,NewT] = split( T,i )
n=length(T);
NewT=zeros(n,1);
NewT(1:i)=linspace(T(1),T(i),i);
NewT(i:n)=linspace(T(i),T(n),n-i+1);
error=norm(T-NewT,2);
end
function [error] = errorsplit(T)
n=length(T);
NewT=linspace(T(1),T(n),n);
error=norm(T-NewT',inf);
end
附上小函数的代码
Matlab 怎样使每个函数的结果都输出呢function [breakpoint] = TopDown( T,left,right,max_error)small_T=T(left:right);best_so_far=inf;n=length(small_T);for i=2:n-1error_split=split(small_T,i);if error_splitmax_error)breakpoint=TopDown(T,left
不知道楼主要所有满足什么条件的breakpoint;但方法是这样的,topdown可以设置两个输出参数,其中一个是allbp存放楼主想要的breakpoint,先赋值为空矩阵,然后找到满足楼主条件的breakpoint就allbp=[allbp breakpoint];就ok了,如下面的程序,注释加好的表示我加的语句
function [allbp breakpoint] = TopDown( T,left,right,max_error)
allbp=[]; %+++++++++++++++
small_T=T(left:right);
best_so_far=inf;
n=length(small_T);
for i=2:n-1
error_split=split(small_T,i);
if error_splitmax_error)
breakpoint=TopDown(T,left,breakpoint,max_error);
allbp=[allbp breakpoint]; %+++++++++++++++++
end
if (errorsplit(T(breakpoint+1:right))>max_error)
breakpoint=TopDown(T,breakpoint,right,max_error);
allbp=[allbp breakpoint]; %++++++++++++++++
end
end