[已解决] matlab中for循环语句使用问题

[复制链接]
darkkk 发表于 2022-4-11 17:40:00
本帖最后由 darkkk 于 2022-4-11 18:01 编辑

各位大佬求提问,我写了一个for循环,但是我生成的矩阵X一直没有变化,这是为啥啊:(
clc
clear all
load('data1.mat')

A = data5;   %A需要为112280*n的矩阵
A = A(:);
f = 200000;   %定义数据结果频率0.01s算一次

    for r=1:30
        time_stamp = 0.01 * r;
        X = zeros(30,2);
        threshold=2000;
        if A(1 + (r-1) * f)<threshold
           flag=0;
        else
           flag=1;
        end
           old=A(1 + (r-1) * f);
           new=A(2 + (r-1) * f);
           count=0;
        for t=1:f     %2022是随便取的,看X1数据量而定
            new=A(t + (r-1) * f);
            %上升沿
            if(new>threshold)&&(old<=threshold)&&(flag==0)
              flag=1;
              count=count+1;
            end
            %下降沿
            if(new<threshold)&&(old>=threshold)&&(flag==1)
              flag=0;
            end
              old=new;
        end

        X(r,1) = time_stamp;
        X(r,2) = count;
    end

最佳答案


20141303 发表于 2022-4-11 18:13:45
仅供参考,试试
  1. clc
  2. clear all
  3. load('data1.mat')

  4. A = data5;   %A需要为112280*n的矩阵

  5. A = A(:);
  6. f = 200000;   %定义数据结果频率0.01s算一次
  7. X = zeros(30,2);
  8. for r=1:30
  9.     time_stamp = 0.01 * r;
  10.    
  11.     threshold=2000;
  12.     if A(1 + (r-1) * f)<threshold
  13.         flag=0;
  14.     else
  15.         flag=1;
  16.     end
  17.     old=A(1 + (r-1) * f);
  18.     new=A(2 + (r-1) * f);
  19.     count=0;
  20.     for t=1:f     %2022是随便取的,看X1数据量而定
  21.         new=A(t + (r-1) * f);
  22.         %上升沿
  23.         if(new>threshold)&&(old<=threshold)&&(flag==0)
  24.             flag=1;
  25.             count=count+1;
  26.         end
  27.         %下降沿
  28.         if(new<threshold)&&(old>=threshold)&&(flag==1)
  29.             flag=0;
  30.         end
  31.         old=new;
  32.     end

  33.     X(r,1) = time_stamp;
  34.     X(r,2) = count;
  35. end
复制代码
回复此楼

2 条回复


20141303 发表于 2022-4-11 18:13:45
仅供参考,试试
  1. clc
  2. clear all
  3. load('data1.mat')

  4. A = data5;   %A需要为112280*n的矩阵

  5. A = A(:);
  6. f = 200000;   %定义数据结果频率0.01s算一次
  7. X = zeros(30,2);
  8. for r=1:30
  9.     time_stamp = 0.01 * r;
  10.    
  11.     threshold=2000;
  12.     if A(1 + (r-1) * f)<threshold
  13.         flag=0;
  14.     else
  15.         flag=1;
  16.     end
  17.     old=A(1 + (r-1) * f);
  18.     new=A(2 + (r-1) * f);
  19.     count=0;
  20.     for t=1:f     %2022是随便取的,看X1数据量而定
  21.         new=A(t + (r-1) * f);
  22.         %上升沿
  23.         if(new>threshold)&&(old<=threshold)&&(flag==0)
  24.             flag=1;
  25.             count=count+1;
  26.         end
  27.         %下降沿
  28.         if(new<threshold)&&(old>=threshold)&&(flag==1)
  29.             flag=0;
  30.         end
  31.         old=new;
  32.     end

  33.     X(r,1) = time_stamp;
  34.     X(r,2) = count;
  35. end
复制代码
回复此楼

darkkk 发表于 2022-4-11 18:22:47

感谢大佬的解答!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表