callback函数 matlab,matlab GUI 自主设计时callback回调函数问题
本帖最后由 李木头小同学 于 2016-12-11 21:03 编辑
我初学GUI,虽然知道matlab有GUIDE辅助,我没有用,但在CALLBACK回调函数使用时出错了。代码如下:clc;
clear;
h0 = figure('menubar','none',... %创建窗口
'position',[50 50 1200 600],... %设置窗口的位置[水平坐标 垂直坐标 窗口宽度 窗口高度]
'numbertitle', 'off',...
'name','例4.4.1:设置曲线的形状与颜色');
h1 = axes('parent',h0,... %创建坐标轴1
'position',[0.15 0.65 0.35 0.3],... %设置坐标轴的位置[水平坐标 垂直坐标 窗口宽度 窗口高度]
'visible','on'); %设置坐标底色为可见
h2 = axes('parent',h0,... %创建坐标轴
'position',[0.15 0.25 0.35 0.3],... %设置坐标轴的位置[水平坐标 垂直坐标 窗口宽度 窗口高度]
'visible','on'); %设置坐标底色为可见
h3 = axes('parent',h0,... %创建坐标轴
'position',[0.56 0.25 0.35 0.3],... %设置坐标轴的位置[水平坐标 垂直坐标 窗口宽度 窗口高度]
'visible','on'); %设置坐标底色为可见
% xlabel('自变量x'); %x轴标签
% ylabel('函数值y'); %y轴标签
% title('y=sin(x)'); %标题
% x = 0 : 0.1 : 2 * pi; %x轴数据
% k = line(x,sin(x)); %绘制数据曲线
set(0,'DefaultUicontrolfontsize',12) %设置控件(就是下方按钮)默认的字体大小
p1 = uicontrol('parent',h0,... %创建【载入数据】按钮
'string','载入数据',...
'position',[50 500 80 30],...
'callback','data=load (''R6GZ.txt''),x = data(:,1),i=2:18,y = data(:,i),subplot(h1),plot(x,y),xlabel(''波数''),ylabel(''强度''),grid on,zoom on');
p2 = uicontrol('parent',h0,... %创建【扣除基线】按钮
'string','扣除基线',...
'position',[50 450 80 30],...
'callback','load (''R6GZ.txt'');x=R6GZ(:,1); x=x'';for i=2:19;data=R6GZ(:,i);N=length(data);lambda=5000;I=speye(N);D2 = spdiags(ones(N-2,1)*[1 -2 1],[0 1 2],N-2,N);trend = inv(I+lambda^2*D2''*D2)*data;y=data-trend;jxoutput(:,i-1)=[y];end;subplot(h2),plot(x,data,''r'');hold on;plot(x,y);hold off');
p3 = uicontrol('parent',h0,... %创建【小波滤波】按钮
'string','小波滤波',...
'position',[50 400 80 30],...
'callback',['load (''R6GZ.txt'');',...
'x=R6GZ(:,1);',... % 读入波数
'x=x'';',... % 将波数(原本是横向)转置成纵向
'for i=2:19;',...
'data=R6GZ(:,i);',...
'N=length(data);',...
'lambda=5000;',...
'I=speye(N);',...
'D2 = spdiags(ones(N-2,1)*[1 -2 1],[0 1 2],N-2,N);',...
'trend = inv(I+lambda^2*D2''*D2)*data;',...
'y=data-trend;',...
'jxoutput(:,i-1)=[y];',...
'end;',...
'result=zeros(16,1015);',...
'k=1;',...
'for i=1:18',...
'ss=jxoutput(:,i)'';',...
's=ss(1:1015);',...
'subplot(h1)',...
'plot(x,s);',...
'xlabel(''波数'');',...
'ylabel(''幅值 A'');',...
'title(''原始信号'');',...
'[c,l]=wavedec(s,3,''db1'');',...
'a3=appcoef(c,l,''db1'',3);',...
'd3=detcoef(c,l,3);',...
'd2=detcoef(c,l,2);',...
'd1=detcoef(c,l,1);',...
'softd1=wthresh(d1,''s'',70);',...
'softd2=wthresh(d2,''s'',70);',...
'softd3=wthresh(d3,''s'',70);',...
'c2=[a3,softd3,softd2,softd1];',...
's3=waverec(c2,l,''db1'');',...
'subplot(h2);',...
'plot(x,s3,''LineWidth'',1);',...
'xlabel(''波数'');',...
'ylabel(''幅值 A'');',...
'title(''给定软阈值消噪后的信号'');',...
'result(k,1:1015)=s3;',...
'k=k+1;',...
'end']);
前两个按钮功能都可以正常实现,但是小波滤波按钮不能成功实现,错误如下:
Error using load ('R6GZ.txt');x=R6GZ(:,1);x=x';for i=2:19;data=R6GZ(:,i);N=length(data);lambda=5000;I=speye(N);D2 = spdiags(ones(N-2,1)*[1
-2 1],[0 1 2],N-2,N);trend = inv(I+lambda^2*D2'*D2)*data;y=data-trend;jxoutput(:,i-1)=[y];end;result=zeros(16,1015);k=1;for
i=1:18ss=jxoutput(:,i)';s=ss(1:1015);subplot(h1)plot(x,s);xlabel('波数');ylabel('幅值
A');title('原始信号');[c,l]=wavedec(s,3,'db1');a3=appcoef(c,l,'db1',3);d3=detcoef(c,l,3);d2=detcoef(c,l,2);d1=detcoef(c,l,1);softd1=wthresh(d1,'s',70);softd2=wthresh(d2,'s',70);softd3=wthresh(d3,'s',70);c2=[a3,softd3,softd2,softd1];s3=waverec(c2,l,'db1');subplot(h2);plot(x,s3,'LineWidth',1);xlabel('波数');ylabel('幅值
A');title('给定软阈值消噪后的信号');result(k,1:1015)=s3;k=k+1;end
Error: Unexpected MATLAB expression.
Error while evaluating uicontrol Callback
我看了论坛里其他人的解答,我试着把callback后的语句编程了一个function,但是实现时有报错了,function函数如下:
function myfunction(jxoutput)
load R6GZ.txt;% R6GZ.txt为实验数据1015*18,其中最后一列是待预测未知数据
x=R6GZ(:,1); % 读入波数
x=x'; % 将波数(原本是横向)转置成纵向
for i=2:19
data=R6GZ(:,i)
N=length(data);
lambda=5000;
I=speye(N); % 生成单位稀疏矩阵
D2 = spdiags(ones(N-2,1)*[1 -2 1],[0 1 2],N-2,N);%A = spdiags(B,D,m,n),产生一个m×n稀疏矩阵A,其元素是B中的列元素放在由D指定的对角线位置上。
trend = inv(I+lambda^2*D2'*D2)*data; %矩阵求逆
y=data-trend;
jxoutput(:,i-1)=[y] %将每一次循环得到的结果存到jxoutput矩阵中
end
result=zeros(16,1015); %生成一个15*1015的零矩阵
k=1;
for i=1:18
ss=jxoutput(:,i)'
s=ss(1:1015)%将信号的第1到第1015个采样点赋给s
plot(x,s);
xlabel('波数');
ylabel('幅值 A');
title('原始信号');
%% 使用db1小波对原始信号进行三层分解并提取系数
[c,l]=wavedec(s,3,'db1');%使用db1小波对原始信号进行三层分解并提取系数
a3=appcoef(c,l,'db1',3); %提取小波分解的低频系数
d3=detcoef(c,l,3); %提取第三层的高频系数
d2=detcoef(c,l,2); %提取第二层的高频系数
d1=detcoef(c,l,1); %提取第一层的高频系数
%% 用给定软阈值进行消噪处理
softd1=wthresh(d1,'s',70);
softd2=wthresh(d2,'s',70);
softd3=wthresh(d3,'s',70);
c2=[a3,softd3,softd2,softd1];
s3=waverec(c2,l,'db1');
plot(x,s3,'LineWidth',1);% 画出软阈值消噪后的信号
xlabel('波数');
ylabel('幅值 A');
title('给定软阈值消噪后的信号');
result(k,1:1015)=s3;
k=k+1
end
报错提示为:
Error using myfunction
Too many input arguments.
Error while evaluating uicontrol Callback
请哪位大神帮我解答一下。谢谢
callback函数 matlab,matlab GUI 自主设计时callback回调函数问题相关推荐
- java 自定义函数的调用_Java/Android中的函数调用回调函数自定义回调函数
在做Android自定义控件时遇到要自定义回调函数的问题,想想自己还暂时没有那么精深的技术,赶紧返过头回来再重新研究Java中回调函数的问题.然而不幸的是,网上太多杂乱的帖子和博客都是转来转去,而且都 ...
- 函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...
- c语言定时器回调函数的参数,定时器的简单实现即回调函数的运用
这两天在 研究回调函数就想实现简单的定时器,如下是鄙人的程序望指教.ios #include #include using namespace std;app #define MAXNUM 25 ...
- 6、函数返回值、this、递归及回调函数
一.函数的返回值 ==> return 1. return将函数内部的值返回到函数外,函数外若想使用,必须要接收该返回值 2. return若不书写或者直接写return,函数的返回值为unde ...
- memcpy函数_如何理解c语言中的回调函数
在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 这段话不是那么好理解,不同语言实现回调的方式有些许不 ...
- C语言带参数的回调函数怎么传参,C语言如何实现回调函数
回调函数就是就是通过一个统一的接口实现不同的功能,C语言中的回调函数就是在代码中根据所传的参数不同而调用不同的回调函数 回调函数是一个程序员不能显式调用的函数:通过将回调函数的地址传给调用者从而实现调 ...
- ajax回调函数ifelse,实现AJAX及用Promise解决回调函数命名问题
html代码: js代码: window.jQuery=function(){} window.jQuery.ajax = function({method, url, body, headers, ...
- matlab设计GUI可视化界面全方位解析
如何使用matlab设计GUI及导出 一.GUI的基础知识 开始生成GUI界面 回调函数 Handles结构体 GUI中的参数传递 二.控件介绍 一.普通按钮 二.可编辑文本(edit)和静态文本(t ...
- 回调函数(CALLBACK)学习总结
回调函数应该和设计相关而不是和语言相关. 在分层设计中,高层次的模块会叫低层次的模块做一些事情,通常是通过函数调用. 从设计上来说,低层次的模块不应该直接调用高层次模块的函数. 所以高层次模块在叫低 ...
- javascript~callback回调函数
函数是对象,所以它可以作为一个参数传递给其他函数. 回调函数作为一个参数传递给其他函数时是没有括号的,只有函数名:使用括号表示立即执行回调函数callback.我们只希望传递一个函数的引用,让其他函数 ...
最新文章
- Git 2.20的重大更新:侧重可用性和性能
- android 命令启动服务,adb 命令
- ccna学习笔记之五:路由器密码恢复
- 【世界杯自救指南】直播技术解密
- 解决WSL2中Vmmem内存占用过大问题
- ROADS POJ - 1724(最短路+邻接表+dfs)
- 用TensorFlow的Linear/DNNRegrressor预测数据
- mysql 字符串特殊字符_转:MySQL数据入库时特殊字符处理
- 向Spark的DataFrame增加一列数据
- 做了 7 年开源数据库开发,我学到了什么?
- 51单片机两只老虎c语言程序,基于51单片机蜂鸣器的两只老虎音乐代码
- Django实现web端tailf日志文件
- 【CVPR2022】论文阅读:Revisiting Skeleton-based Action Recognition
- SPSS实现两变量相关分析
- 物联网云平台的远程管理
- xp系统计算机蓝屏,Xp系统出现蓝屏代码 0x0000007b解决方法
- android 7.1 开机速度优化记录
- 无密码多重身份验证(MFA)2022年全球行业分析报告
- 使用Amazon Deep Learning AMI 快速实现 CUDA,cuDNN 和深度学习框架版本兼容
- 上海航芯 | 全自动咖啡机设计方案