MATLAB中ischange函数用法

目录

语法

说明

示例

均值的变化

线性区的变化

矩阵数据


        ischange函数的功能是查找数据中的突然变化。

语法

TF = ischange(A)
TF = ischange(A,method)
TF = ischange(___,dim)
TF = ischange(___,Name,Value)
[TF,S1] = ischange(___)
[TF,S1,S2] = ischange(___)

说明

        ​TF = ischange(A) 返回一个逻辑数组,当 A 的对应元素的均值出现突然变化时,该逻辑数组的元素为逻辑值 1 (true)。

        ​TF = ischange(A,method) 指定如何定义数据中的变化点。例如,ischange(A,'variance') 将计算 A 的元素方差的突然变化。​

        TF = ischange(___,dim) 为上述任一语法指定 A 的运算维度。例如,ischange(A,2) 计算矩阵 A 的每一行的变化点。​

        ​TF = ischange(___,Name,Value) 使用一个或多个名称-值参数指定用于计算变化点的其他参数。例如,ischange(A,'MaxNumChanges',m) 最多检测到 m 个变化点。​

        ​[TF,S1] = ischange(___) 还返回有关变化点之间的线段的信息。例如,[TF,S1] = ischange(A) 返回包含向量 A 的变化点之间的数据均值的向量 S1。

        ​[TF,S1,S2] = ischange(___) 返回有关变化点之间的线段的其他信息。例如,[TF,S1,S2] = ischange(A) 返回包含每个线段均值的向量 S1 以及包含向量 A 的每个线段方差的向量 S2。​

示例

均值的变化

        创建一个由含噪数据组成的向量,并计算数据均值的突然变化。

A = [ones(1,5) 25*ones(1,5) 50*ones(1,5)] + rand(1,15);

TF = ischange(A)
TF = 1x15 logical array

   0   0   0   0   0   1   0   0   0   0   1   0   0   0   0

要计算变化点之间数据的均值,请指定第二个输出参数。

[TF,S1] = ischange(A);
plot(A,'*')
hold on
stairs(S1)
legend('Data','Segment Mean','Location','NW')

如图所示:

线性区的变化

        创建一个由含噪数据组成的向量,并计算数据的斜率和截距的突然变化。设置较大的检测阈值可减少由于噪声而检测到的变化点数。

A = [zeros(1,100) 1:100 99:-1:50  50*ones(1,250)] + 10*rand(1,500);
[TF,S1,S2] = ischange(A,'linear','Threshold',200);
segline = S1.*(1:500) + S2;
plot(1:500,A,1:500,segline)              
legend('Data','Linear Regime')

如图所示:

除了提供阈值外,还可以指定要检测的最大变化点数。

[TF,S1,S2] = ischange(A,'linear','MaxNumChanges',3);

矩阵数据

计算矩阵每一行均值的突然变化。

A = diag(25*ones(5,1)) + rand(5,5)
A = 5×5

   25.8147    0.0975    0.1576    0.1419    0.6557
    0.9058   25.2785    0.9706    0.4218    0.0357
    0.1270    0.5469   25.9572    0.9157    0.8491
    0.9134    0.9575    0.4854   25.7922    0.9340
    0.6324    0.9649    0.8003    0.9595   25.6787

TF = ischange(A,2)
TF = 5x5 logical array

   0   1   0   0   0
   0   1   1   0   0
   0   0   1   1   0
   0   0   0   1   1
   0   0   0   0   1

参数说明

 A-输入数据,指定为向量、矩阵、多维数组、表或时间表。

method — 变化检测方法

更改检测方法,指定为下列值之一:

  • 'mean' - 计算数据均值的突然变化。

  • 'variance' - 计算数据方差的突然变化。

  • 'linear' - 计算数据的斜率和截距的突然变化。

dim — 运算维度

运算维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。

以一个 m×n 输入矩阵 A 为例:

  • ischange(A,1) 基于 A 的每列中的数据检测变化点,并返回一个 m×n 矩阵。

    ischange(A,1) column-wise operation

  • ischange(A,2) 基于 A 的每行中的数据检测变化点,并返回一个 m×n 矩阵。

    ischange(A,2) row-wise operation

        对于表或时间表输入数据,不支持 dim,并且分别对每个表或时间表变量进行运算。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
//package net.src.net; <br><br>import javax.swing.*; <br>import javax.swing.event.*; <br>import java.awt.*; <br>import java.awt.event.*; <br>import java.io.*; <br>import java.awt.color.*; <br>import java.awt.font.*; <br>import javax.swing.undo.*; <br><br>public class Note extends JFrame <br>{ <br>boolean isChange=false; <br>boolean wasChange=false; <br>JMenuBar menuBar=new JMenuBar(); <br><br>JMenu menuFile=new JMenu("File"); <br>JMenuItem menuFileOpen=new JMenuItem("Open.."); <br>JMenuItem menuFileSave=new JMenuItem("Save.."); <br>JMenuItem menuFileExit=new JMenuItem("Exit"); <br><br>JMenu menuEdit=new JMenu("Edit"); <br>JMenuItem menuFileCut=new JMenuItem("Cut"); <br>JMenuItem font=new JMenuItem("Font"); <br>JMenuItem menuFilePaste=new JMenuItem("Paste"); <br><br>JTextArea fileArea=new JTextArea(); <br><br>public Note() <br>{ <br>this.setTitle("记事本"); <br>Toolkit tool=this.getToolkit();//窗口图标! <br>Image myimage=tool.getImage("戒指.jpg"); <br>this.setIconImage(myimage); <br>setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); <br>addWindowListener(new WindowAdapter() <br>{ <br>public void windowClosing(WindowEvent e) <br>{ <br>exit(); <br>} <br>}); <br>menuFileOpen.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileOpen_actionPerformed(e); <br>} <br>}); <br>menuFileSave.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileSave_actionPerformed(e); <br>} <br>}); <br>menuFileExit.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileExit_actionPerformed(e); <br>} <br>}); <br>menuFileCut.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileCut_actionPerformed(e); <br>} <br>}); <br>menuFilePaste.addActionListener(new ActionListener() <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>filePaste_actionPerformed(e); <br>} <br>}); <br>font.addActionListener(new ActionListener () <br>{ <br>public void actionPerformed(ActionEvent e) <br>{ <br>fileColor_actionPerformed(e); <br>} <br>}); <br>fileArea.getDocument().addDocumentListener(new DocumentListener() <br>{ <br>public void insertUpdate(DocumentEvent e) <br>{ <br>wasChange=isChange; <br>isChange=true; <br>} <br>public void removeUpdate(DocumentEvent e) <br>{ <br>wasChange=isChange; <br>isChange=true; <br>} <br>public void changedUpdate(DocumentEvent e) <br>{ <br>wasChange=isChange; <br>isChange=true; <br>} <br>}); <br>setSize(500,450); <br>menuBar.add(menuFile); <br>menuFile.setMnemonic('F'); <br>menuBar.add(menuEdit); <br>menuEdit.setMnemonic('E'); <br>menuFile.add(menuFileOpen); <br>menuFileOpen.setMnemonic('O');//访问健; <br>menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));//快捷健; <br>menuFile.add(menuFileSave); <br>menuFileSave.setMnemonic('S'); <br>menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); <br>menuFile.addSeparator(); <br>menuFile.add(menuFileExit); <br>menuFileExit.setMnemonic('E'); <br>menuEdit.add(menuFileCut); <br>menuFileCut.setMnemonic('C'); <br>menuFileCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); <br>menuEdit.add(menuFilePaste); <br>menuFilePaste.setMnemonic('P'); <br>menuFilePaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK)); <br>menuEdit.add(font); <br>font.setMnemonic('N'); <br>font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); <br>this.getContentPane().add(new JScrollPane(fileArea)); <br>setJMenuBar(menuBar); <br>fileArea.setLineWrap(true); <br>} <br>public void fileExit_actionPerformed(ActionEvent e) <br>{ <br>System.exit(0); <br>} <br>public void fileOpen_actionPerformed(ActionEvent e) <br>{ <br>//以下是filter; <br>JFileChooser fileChooser=new JFileChooser(); <br>//fileChooser.addChoosableFileFilter(new myFilter("*.txt","Files(*.txt)")); <br>fileChooser.addChoosableFileFilter(fileChooser.getFileFilter()); <br>if(fileChooser.APPROVE_OPTION!=fileChooser.showOpenDialog(this))return; <br>//以下是文件读 <br>BufferedReader dataIn=null; <br>try <br>{ <br>dataIn=new BufferedReader(new FileReader(fileChooser.getSelectedFile().getPath())); <br>String c=null; <br>do <br>{ <br>c=dataIn.readLine(); <br>if(c!=null) <br>fileArea.append(c+"\n"); <br>} <br>while(c!=null); <br>} <br>catch(Exception ex) <br>{ <br>System.out.println("Catch exception:"+ex.toString()); <br>} <br>} <br>public void exit() <br>{ <br>if(isChange==false) <br>System.exit(1); <br>else <br>{ <br>int decision=JOptionPane.showConfirmDialog(this,"The File has Change.\n"+"Do you want to save the change?", <br>"Notepad",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE); <br>if (decision == JOptionPane.YES_OPTION) <br>{ <br>//以下是将文件写入计算机! <br>try { <br>JFileChooser fileSave = new JFileChooser(); <br>fileSave.setDialogTitle("保存文件"); <br>//fileSave.addChoosableFileFilter(new myFilter("*.txt","Files(*.txt)")); <br>fileSave.addChoosableFileFilter(fileSave.getFileFilter()); <br>if (fileSave.APPROVE_OPTION != fileSave.showSaveDialog(this)) <br>return; <br>BufferedWriter dataOut = new BufferedWriter(new BufferedWriter(new <br>FileWriter(fileSave.getSelectedFile()))); <br>String c = null; <br>do { <br>String str = fileArea.getText(); <br>dataOut.write(str); <br>dataOut.close(); <br>} <br>while (c != null); <br>} <br>catch (Exception e2) { <br>System.out.println("Catch exception:有错误!" + e2.toString()); <br>} <br>} <br>else if (decision == JOptionPane.NO_OPTION) <br>System.exit(1); <br>else if (decision == JOptionPane.CANCEL_OPTION); <br>; <br>} <br>//innerclass.fileSave_actionPerformed(); <br>} <br>public void fileSave_actionPerformed(ActionEvent e1) <br>{ <br><br>//以下是将文件写入计算机! <br>try <br>{ <br>JFileChooser fileSave=new JFileChooser(); <br>fileSave.setDialogTitle("保存文件" ); <br>//fileSave.addChoosableFileFilter(new myFilter("*.txt","Files(*.txt)")); <br>fileSave.addChoosableFileFilter(fileSave.getFileFilter()); <br>if(fileSave.APPROVE_OPTION!=fileSave.showSaveDialog(this))return; <br>BufferedWriter dataOut=new BufferedWriter(new BufferedWriter(new FileWriter(fileSave.getSelectedFile()+".txt"))); <br>//RandomAccessFile dataOut=new RandomAccessFile(fileSave.getSelectedFile(),"rw"); <br>String c=null; <br>do <br>{ <br>String str=fileArea.getText(); <br>dataOut.write(str); <br>dataOut.close(); <br>} <br>while(c!=null); <br>} <br>catch(Exception e2) <br>{ <br>System.out.println("Catch exception:有错误!"+e2.toString()); <br>} <br>} <br>public static void main(String arg[]) <br>{ <br>Note nt=new Note(); <br>nt.show(); <br>} <br>public void fileCut_actionPerformed(ActionEvent e) <br>{ <br>fileArea.cut(); <br>} <br>public void filePaste_actionPerformed(ActionEvent e) <br>{ <br>fileArea.paste(); <br>} <br>public void fileColor_actionPerformed(ActionEvent e) <br>{ <br>JColorChooser fileColor=new JColorChooser(); <br>//fileArea.setForeground(fileColor.showDialog(this,"颜色",Color.red)); <br>//fileArea.setSelectionColor(fileColor.showDialog(this,"颜色",Color.red)); <br>fileArea.setSelectionColor(fileColor.showDialog(this,"颜色",Color.black)); <br>} <br>} <br>//文件过滤类怎么写!
@Override public HomePagePopupResp getPopupData(HomePagePopupReq req) throws BusinessException { HomePagePopupResp homePagePopupResp = new HomePagePopupResp(); RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); try { // 创建线程池 ThreadPoolExecutor threadPool = new ThreadPoolExecutor(3, 20, 0, TimeUnit.SECONDS, new LinkedBlockingDeque<>(1024)); // 添加任务 threadPool.submit(new Runnable() { @Override public void run() { // /api/project-m-sit01/srv/intelFive/queryNoFinishMeetTenDay 通过用户ID查询距离回收日期10天内的已电约完成且未面见完成的客户(每天进入app首页弹出一次) List<NoFinishThreeDayResp> queryNoFinishMeetTenDayList = intelFiveService.queryNoFinishMeetTenDay(req.getMeetNoFinishTenDayReq()); if (CollectionUtil.isNotEmpty(queryNoFinishMeetTenDayList)){ homePagePopupResp.setQueryNoFinishMeetTenDayList(queryNoFinishMeetTenDayList); } log.info(String.format("/outer/homePage/popup >>>>任务QueryNoFinishMeetTenDayList执行完成")); } }); threadPool.submit(new Runnable() { @Override public void run() { // /api/project-m-sit01/srv/intelFive/queryNoFinishThreeDay 通过用户ID查询距离回收日期3天内的未完成电约的客户(每天进入app首页弹出一次) List<NoFinishThreeDayResp> noFinishThreeDayRespList = intelFiveService.queryNoFinishThreeDay(req.getUserCustRecordReq()); if (CollectionUtil.isNotEmpty(noFinishThreeDayRespList)){ homePagePopupResp.setNoFinishThreeDayRespList(noFinishThreeDayRespList); } log.info(String.format("/outer/homePage/popup >>>>任务NoFinishThreeDayRespList执行完成")); } }); threadPool.submit(new Runnable() { @Override public void run() { ///api/assess-sit01/srv/assess/poster/popupPoster 弹出海报,登录APP时调用 Map listR = assessRemoteService.doPopupPoster(req.getPosterReq()); if (ObjectUtil.isNotNull(listR)){ homePagePopupResp.setPosterRespList(listR); } log.info(String.format("/outer/homePage/popup >>>>任务PosterRespList执行完成")); } }); threadPool.shutdown(); }catch (Exception e){ throw new BusinessException("/outer/homePage/popup 调用失败"); } // ///api/project-m-sit01/srv/smart5/queryNewsCount?isChange=1 查询未接来电弹框状态 // AppelManqueClickResp appelManqueClickResp = appelManqueService.queryNewsCount(req.getIsChange()); // homePagePopupResp.setAppelManqueClickResp(appelManqueClickResp); return homePagePopupResp; } 该段代码 子线程如何获取请求头参数
06-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值