아주 기본적인것으로 1차안이다

계속 업그레이드 하면서 발전시키려고 함

IMU 센서(가속도, 자이로스코프)

Variable Euler Angle Symbol Output Interval (Degrees)
X Roll ϕ −180 ≤ ϕ < 180
Y Pitch θ −90 ≤ θ ≤ 90
Z Yaw ψ −180 ≤ ψ < 180

https://kr.mathworks.com/help/fusion/gs/spatial-representation-coordinate-systems-and-conventions.html?searchHighlight=roll%20pitch&s_tid=doc_srchtitle

 

Orientation, Position, and Coordinate Systems - MATLAB & Simulink - MathWorks 한국

아래 MATLAB 명령에 해당하는 링크를 클릭하셨습니다. 이 명령을 MATLAB 명령 창에 입력해 실행하십시오. 웹 브라우저에서는 MATLAB 명령을 지원하지 않습니다.

kr.mathworks.com

3축 가속도 센서의 출력 값에는 회전성분이 포 함되므로 이를 고려하지 않고 하나의 대표값으로 처리

accmag = sqrt(accx.^2 + accy.^2 + accz.^2); 

roll: y축에 대한 회전 (갸웃갸웃) roll = arctan(y/z)

pitch: x축에 대한 회전 (끄덕끄덕) pitch = arctan(x/z) 

yaw: z축에 대한 회전 (도리도리중력가속도 방향과 일치하는 z축에 대한 회전은 감지할 수 없음

 모든 물체는 지구 중심 방향으로 9.8m/s^2 중력가속도를 받음

스마트폰을 세워놓은 (정지)상태라면 중력가속도의 반대인 y축의 플러스 방향으로 9.8m/s^2의 가속도가 작용함

 

속력 = 거리/시간  -> 각속도 = 회전한 각도/시간

속력 * 시간 = 거리 -> 각속도 * 시간 = 회전한 각도

따라서 단위 시간 동안 측정되는 각속도를 이용하여 회전한 각도를 누적하여 더하게 되면 (적분) 회전한 각도를 구할 수 있게 된다cumtrapz(time,accelerometer)

clc
clear all

%데이터 불러오기
AccData = csvread('Accelerometer.csv',1,1);
GyrData = csvread('Gyroscope.csv',1,2);

%가속도
accx = AccData(:,2);
accy = AccData(:,3);
accz = AccData(:,4);

%acc대표값
accmag = sqrt(accx.^2 + accy.^2 + accz.^2);

%velocity 속도
time = AccData(:,1)./1000;
accelx = (accx-mean(accx))*9.8;
accvel = cumtrapz(time,accelx);
%Displacement(변위) : cumtrapz(time,accvel)

%roll x축 회전
accroll = atan(accy./accz)*180/pi;
%pitch y축 회전
accpitch = -atan(accx./accz)*180/pi;

%STFT변환
spectrogram(accvel,'yaxis');

%자이로스코프
gyrx = GyrData(:,1);
gyry = GyrData(:,2);
gyrz = GyrData(:,3);

%roll x축 회전
gyrroll = atan(gyry./gyrz)*180/pi;
%pitch y축 회전
gyrpitch = -atan(gyrx./gyrz)*180/pi;

%STFT변환
spectrogram(gyrx,'yaxis');

영우 글로벌 러닝 4차혁명 교육과정의 "방형욱" 강사님과 함께 공부한 내용입니다.

# Rollup

 

  - 컬럼의 개수가 n개면 n+1 가지 종류의 결과 생성

  - 컬럼의 나열 순서가 중요함

 

  select deptno, job, sum(sal)

  from emp

  group by deptno, job

 

  select deptno, job, sum(sal)

  from emp

  group by ROLLUP(deptno, job);

 

  select deptno, job, sum(sal)

  from emp

  group by GROUPING SETS((deptno, job), (deptno), ());

 

  cf. select deptno, decode(deptno, null, 'TOTAL', decode(job, null, 'DEPT_SUM', job)) as job, sum(sal)

      from emp

      group by ROLLUP(deptno, job);

 

# Cube

 

  - 컬럼의 개수가 n개면 2^n 가지 종류의 결과 생성

  - 컬럼의 나열 순서가 중요하지 않음

 

  select deptno, job, sum(sal)

  from emp

  group by CUBE(deptno, job);

 

  select deptno, job, sum(sal)

  from emp

  group by GROUPING SETS((deptno, job), (deptno), (job), ());

 

# 집계 기준 컬럼이 3개일 경우

 

  drop table emp2 purge;

 

  create table emp2

  as

  select  empno, ename, sal, job, deptno, decode(mod(empno, 2), 0, 'M', 'W') as gender

  from emp e

  union all

  select  empno, ename, sal+100, job, deptno, decode(mod(empno, 2), 0, 'W', 'M') as gender

  from emp e;

 

  select * from emp2;

 

    --

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by ROLLUP(deptno, job, gender)

  order by 1, 2, 3;

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by GROUPING SETS((deptno, job, gender), (deptno, job), (deptno), ())

  order by 1, 2, 3;

 

    --

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by CUBE(deptno, job, gender)

  order by 1, 2, 3;

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by GROUPING SETS((deptno, job, gender), (deptno, job), (deptno, gender), (job, gender), (deptno), (job), (gender), ())

  order by 1, 2, 3;

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by GROUPING SETS((deptno, job, gender), (job, gender), ())

  order by 1, 2, 3;

 

# GROUPING 함수

 

  drop table emp3 purge;

 

  create table emp3 as select * from emp;

 

  update emp3 set job = null where rownum = 1;

 

  select * from emp3;

 

  => grouping 함수를 사용하지 않을 경우 아래와 같이 질의 결과가 이상해집니다.

 

  select deptno, job, sum(sal) as sum_sal

  from emp3

  group by ROLLUP(deptno, job);

 

  select *

  from (select deptno, job, sum(sal) as sum_sal

        from emp3

        group by ROLLUP(deptno, job))

  where deptno is not null

  and job is null;

 

  => grouping 함수를 사용하면 이렇게 달라집니다.

 

  select deptno, job, sum(sal) as sum_sal,

         grouping(deptno) as g_deptno,

         grouping(job)    as g_job

  from emp3

  group by ROLLUP(deptno, job);

 

  select deptno, job, sum_sal

  from (select deptno, job, sum(sal) as sum_sal,

               grouping(deptno) as g_deptno,

               grouping(job)    as g_job

        from emp3

        group by ROLLUP(deptno, job))

  where g_deptno = 0

  and   g_job    = 1;

 

  select deptno, job, sum_sal

  from (select deptno, job, sum(sal) as sum_sal,

               grouping(deptno) as g_deptno,

               grouping(job)    as g_job

        from emp3

        group by ROLLUP(deptno, job))

  where g_deptno = 0

  and   g_job    in (0, 1);

 

# Composite column

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by deptno, job, gender;

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by rollup(deptno, job, gender);

 

    --> deptno, job, gender

    --> deptno, job

    --> deptno

    --> ()

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by rollup(deptno, (job, gender));

 

    --> deptno, job, gender

    --> deptno

    --> ()

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by rollup((deptno, job), gender);

 

    --> deptno, job, gender

    --> deptno, job

    --> ()

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by rollup((deptno, job, gender));

 

    --> deptno, job, gender

    --> ()

 

# Concatenated Groupings

  select deptno, job, gender, sum(sal)

  from emp2

  group by deptno, rollup(job), cube(gender);

 

           deptno    job         gender

                     ()          ()

 

           --> deptno, job, gender

           --> deptno, job

           --> deptno, gender

           --> deptno

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by GROUPING SETS((deptno, job, gender), (deptno, job), (deptno, gender), (deptno));

 

'IT 공방 > SQL' 카테고리의 다른 글

ORA-65096 오류 해결  (0) 2019.10.07

R만 사용하다 오랜만에 파이썬을 쓰니 CSV 읽는 방법을 순간 잊어버....렸던.... 바보 였던....

그래서 혹시 나만 모르는걸까봐 (부끄럽지만) 

누군가에게는 필요한 정보일지 몰라서 적어 놓기로 했다

원래 실수란 오답노트처럼 적어가면서 고쳐가면 좋은거니까 (긍정긍정 ㅋㅋ)


계속 다른 블로그나 글을 읽어봐도

아래와 같이 import csv 또는 import os, pd 만 하라고 나와있지


어디에 파일을 올려야 이게 제대로 읽히는지 경로는 어떻게 해야하는지가 안나와있어서 고생했다 10분간 ㅠㅠ


왜냐!! 너무 쉽고 기본이기 때문이겠지 ㅋㅋㅋㅋㅋ 하지만 난 10분간 이걸 고민했기 때문에

나와같은 고민을 가진 몇몇분들에게 알려드리기 위해 방법을 찾아냈다


짜잔 !!!!!!!!! 

형광펜으로 되어있는 곳에 위치한 [Upload] 클릭하여

내가 가지고 있는 CSV 파일을 이 곳에 위치해야한다. 그래야 사용가능하다는

R처럼 파일을 동일한 디렉토리에 올려놓으면 사용 가능하다는거! 


다음에 다시 잊지 않도록 저장해두고 기억해야지

오늘의 실수는 내일의 발전으로 ㅋㅋㅋ




import csv


f = open('fulldata.csv', 'r', encoding='UTF-8')

rdr = csv.reader(f)

for col in rdr:

    print(col)

f.close()


위의 코드값입니다. 이건 col 컬럼기준으로 나눠진거고 line으로 변경하시면 줄단위로 나옵니다 ^^ 

+ Recent posts