RSS

파이선 행렬곱과 역행렬 예제

파이썬에서 역행렬을 사용하기 위해서는 다음과 같이 모듈들을 임포트해야한다.
numpy와 numpy.linalg 모듈이 필요함.

>>from numpy import *
>>from numpy.linalg import *

>>> A = mat([[1,2], [3, 4]])

>>> A
matrix([[1, 2],
[3, 4]])

>>> inv(A)
matrix([[-2. , 1. ],
[ 1.5, -0.5]])

>>> A*inv(A)
matrix([[ 1.00000000e+00, 0.00000000e+00],
[ 8.88178420e-16, 1.00000000e+00]])

>>> A*inv(A)*A
matrix([[ 1., 2.],
[ 3., 4.]])

- 참고 사이트

http://www.hanb.co.kr/network/view.html?bi_id=369

http://www.remantu.com/python/numpy/basic

http://www.remantu.com/python/numpy/linalg

 
Leave a comment

Posted by on June 3, 2012 in Python

 

Tags: , , ,

안드로이드 달 공전 애니메이션 예제

애니메이션을 수행하기 위해서 처음에 onDraw함수에 thread.delay를 사용하였지만 잘 되지 않아 여러 방법을 찾아 다녔다. invalidate()를 사용하여 변경된것을 적용해보았는데 이것역시 잘 되지 않았다.

http://eagle.phys.utk.edu/guidry/android/animatorDemo.html

위의 있는 예제와 거의 동일하다.

결국 찾은 방법은 thread를 하나 생성하고 여기서 refresh 명령을 내려주면서 달의 위치를 바꿔주면 쉽게 만들 수 있다.

이 방법은 다른 progressbar등을 만들때 사용하면 될 것 같다.

어쨋든 run()  과 onDraw() 부분을 잘 분석 해보기를 바란다.

This slideshow requires JavaScript.

package com.ysoh.canvas2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

import com.ysoh.canvas2.AndroidCanvas2Activity.MyView;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.graphics.drawable.*;
import android.os.Handler;
import android.os.Message;;

public class AndroidCanvas2Activity extends Activity {
	MyView vw;

	 public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      vw = new MyView(this);
	      setContentView(vw);
	      vw.start();

	 }

	 protected class MyView extends View implements Runnable{
		 int cur_angle = 0;
		 Thread animator = null;

	      public MyView(Context context) {
	        super(context);
	      }

	      void start(){
	    	  animator = new Thread(this);
	    	  animator.start();

	      }

	      public void run() {
	    	  while(true){
	    		 cur_angle += (360/16);

	  			 postInvalidate();

	             try {
	            	 Thread.sleep(900, 0);
	             }
	             catch (InterruptedException e)
	             {
	            	 ;
	             }
	    	  }
	  	  }

	       public void onDraw(Canvas canvas) {
				Paint Pnt = new Paint();

				super.onDraw(canvas);

				DisplayMetrics displayMetrics = new DisplayMetrics();
				getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

				int deviceWidth = displayMetrics.widthPixels;
				int deviceHeight = displayMetrics.heightPixels;
				int radius = 100;
				int mini_radius = 10;

				canvas.drawColor(Color.WHITE);
				Pnt.setColor(Color.BLACK);
				Pnt.setStrokeWidth(5);
				Pnt.setStyle(Paint.Style.STROKE);

				radius = deviceWidth/4;

				Pnt.setColor(Color.RED);
				canvas.drawCircle(deviceWidth/2, deviceHeight/5*1, radius, Pnt);

			    mini_radius = 15;
			    Pnt.setColor(Color.BLUE);
			    for (double angle = cur_angle; angle 			    	int x_base = deviceWidth/2;
			    	int y_base = deviceHeight/5*1;
			    	int diff = mini_radius;
			    	int x, y;
			    	double rad;

			    	rad = angle*3.14/180;

				    x = (int) ((radius + diff) * Math.sin(rad));
				    y = (int) ((radius + diff) * Math.cos(rad));

				    canvas.drawCircle(x_base + x, y_base + y, mini_radius, Pnt);

			    }
	      }
	}
}

package com.ysoh.canvas2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

import com.ysoh.canvas2.AndroidCanvas2Activity.MyView;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.graphics.drawable.*;
import android.os.Handler;
import android.os.Message;;

public class AndroidCanvas2Activity extends Activity {
	MyView vw;

	 public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      vw = new MyView(this);
	      setContentView(vw);
	      vw.start();

	 }

	 protected class MyView extends View implements Runnable{
		 int cur_angle = 0;
		 Thread animator = null;

	      public MyView(Context context) {
	        super(context);
	      }

	      void start(){
	    	  animator = new Thread(this);
	    	  animator.start();

	      }

	      public void run() {
	    	  while(true){
	    		 cur_angle += (360/16);

	  			 postInvalidate();

	             try {
	            	 Thread.sleep(900, 0);
	             }
	             catch (InterruptedException e)
	             {
	            	 ;
	             }
	    	  }
	  	  }

	       public void onDraw(Canvas canvas) {

			Paint Pnt = new Paint();

			super.onDraw(canvas);

			DisplayMetrics displayMetrics = new DisplayMetrics();
			getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

			int deviceWidth = displayMetrics.widthPixels;
			int deviceHeight = displayMetrics.heightPixels;
			int radius = 100;
			int mini_radius = 10;

			canvas.drawColor(Color.WHITE);

			Pnt.setColor(Color.RED);
			Pnt.setStrokeWidth(5);
			Pnt.setStyle(Paint.Style.STROKE);

			radius = deviceWidth/4;

			canvas.drawCircle(deviceWidth/2, deviceHeight/5*3, radius, Pnt);

			Pnt.setColor(Color.BLUE);

			for (double angle = cur_angle; angle 				int x_base = deviceWidth/2;
				int y_base = deviceHeight/5*3;
				int diff = mini_radius;
				int x, y;
				double rad = angle*3.14/180;

			    x = (int) ((radius-diff) * Math.sin(rad));
			    y = (int) ((radius-diff) * Math.cos(rad));

			    canvas.drawCircle(x_base + x, y_base + y, mini_radius, Pnt);
			}

	      }
	}
}

 
Leave a comment

Posted by on May 9, 2012 in Android

 

Tags: , , , , , , ,

안드로이드 원 그리기 응용

package com.ysoh.canvas2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

import com.ysoh.canvas2.AndroidCanvas2Activity.MyView;


import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.graphics.drawable.*;
import android.os.Handler;
import android.os.Message;;

public class AndroidCanvas2Activity extends Activity {
	MyView vw;

	
	 public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      vw = new MyView(this);
	      setContentView(vw);
	      vw.start();
	      
	 }
	 
	 protected class MyView extends View implements Runnable{
		 int cur_angle = 0;
		 Thread animator = null;
		 
	      public MyView(Context context) {
	        super(context);
	      }
	      
	      void start(){
	    	  animator = new Thread(this);
	    	  animator.start();
	    	  
	      }
	      
	      public void run() {
	    	  while(true){
	    		 cur_angle += (360/16);
		    	  
	  			 postInvalidate();
	  			
	             try { 
	            	 Thread.sleep(900, 0); 
	             } 
	             catch (InterruptedException e) 
	             { 
	            	 ; 
	             }  
	    	  }    
	  	  }
	      
	      /* HW2 
	      public void onDraw(Canvas canvas) {
				Paint Pnt = new Paint();
				 
				super.onDraw(canvas);
				
				   
				DisplayMetrics displayMetrics = new DisplayMetrics();
				getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
				
				int deviceWidth = displayMetrics.widthPixels;
				int deviceHeight = displayMetrics.heightPixels;
				int radius = 100;
				int mini_radius = 10;
				
				canvas.drawColor(Color.WHITE);
				Pnt.setColor(Color.BLACK);
				Pnt.setStrokeWidth(5);
				Pnt.setStyle(Paint.Style.STROKE);
				
				radius = deviceWidth/4;
				
				canvas.drawCircle(deviceWidth/2, deviceHeight/5*1, radius, Pnt);
			
			    mini_radius = 15;
			    
			    for (double angle = 0; angle < 365; angle += ((double)365/16)){
			    	int x_base = deviceWidth/2;
			    	int y_base = deviceHeight/5*1;
			    	int diff = mini_radius;
			    	int x, y;
			    	double rad;
			    	
			    	rad = angle*3.14/180;
			    	
				    x = (int) ((radius + diff) * Math.sin(rad));
				    y = (int) ((radius + diff) * Math.cos(rad));
				
				    canvas.drawCircle(x_base + x, y_base + y, mini_radius, Pnt);
				 
			    }			    
	      }
	}
}

package com.ysoh.canvas2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

import com.ysoh.canvas2.AndroidCanvas2Activity.MyView;


import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.graphics.drawable.*;
import android.os.Handler;
import android.os.Message;;

public class AndroidCanvas2Activity extends Activity {
	MyView vw;

	
	 public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      vw = new MyView(this);
	      setContentView(vw);
	      vw.start();
	      
	 }
	 
	 protected class MyView extends View implements Runnable{
		 int cur_angle = 0;
		 Thread animator = null;
		 
	      public MyView(Context context) {
	        super(context);
	      }
	      
	      void start(){
	    	  animator = new Thread(this);
	    	  animator.start();
	    	  
	      }
	      
	      public void run() {
	    	  while(true){
	    		 cur_angle += (360/16);
		    	  
	  			 postInvalidate();
	  			
	             try { 
	            	 Thread.sleep(900, 0); 
	             } 
	             catch (InterruptedException e) 
	             { 
	            	 ; 
	             }  
	    	  }    
	  	  }
	      
	       public void onDraw(Canvas canvas) {
				Paint Pnt = new Paint();
				 
				super.onDraw(canvas);
				   
				DisplayMetrics displayMetrics = new DisplayMetrics();
				getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
				
				int deviceWidth = displayMetrics.widthPixels;
				int deviceHeight = displayMetrics.heightPixels;
				int radius = 100;
				int mini_radius = 10;
				
				canvas.drawColor(Color.WHITE);
				Pnt.setColor(Color.BLACK);
				Pnt.setStrokeWidth(5);
				Pnt.setStyle(Paint.Style.STROKE);
				
				radius = deviceWidth/4;
				
				canvas.drawCircle(deviceWidth/2, deviceHeight/5*3, radius, Pnt);
				
				mini_radius = 15;
				for (double angle = 0; angle <365; angle += ((double)365/12)){
					int x_base = deviceWidth/2;
					int y_base = deviceHeight/5*3;
					int diff = mini_radius;
					int x, y;
					double rad = angle*3.14/180;
					
				    x = (int) ((radius-diff) * Math.sin(rad));
				    y = (int) ((radius-diff) * Math.cos(rad));
				
				    canvas.drawCircle(x_base + x, y_base + y, mini_radius, Pnt);
				}	    
		  }
	}
}

 
Leave a comment

Posted by on May 9, 2012 in Android

 

Tags: , , , , , ,

안드로이드 동그라미 그리기


package com.ysoh.canvas2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

import com.ysoh.canvas2.AndroidCanvas2Activity.MyView;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.graphics.drawable.*;
import android.os.Handler;
import android.os.Message;;

public class AndroidCanvas2Activity extends Activity {
	MyView vw;

	 public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      vw = new MyView(this);
	      setContentView(vw);
	      vw.start();

	 }

	 protected class MyView extends View implements Runnable{
		 int cur_angle = 0;
		 Thread animator = null;

	      public MyView(Context context) {
	        super(context);
	      }

	      void start(){
	    	  animator = new Thread(this);
	    	  animator.start();

	      }

	     ///* HW1
	      public void onDraw(Canvas canvas) {

			Paint Pnt = new Paint();

			super.onDraw(canvas);

			DisplayMetrics displayMetrics = new DisplayMetrics();
			getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

			int deviceWidth = displayMetrics.widthPixels;
			int deviceHeight = displayMetrics.heightPixels;
			int radius = 100;

			canvas.drawColor(Color.WHITE);
			Pnt.setColor(Color.BLACK);
			Pnt.setStrokeWidth(5);
			Pnt.setStyle(Paint.Style.STROKE);

			radius = deviceWidth/4;

			canvas.drawCircle(deviceWidth/2, deviceHeight/5*1, radius, Pnt);
			canvas.drawCircle(deviceWidth/2, deviceHeight/5*3, radius, Pnt);

		  }
	}
}

 
Leave a comment

Posted by on May 9, 2012 in Android

 

Tags: , ,

삼성 갤럭시 SIII 소개 동영상

 
Leave a comment

Posted by on May 4, 2012 in Android

 

Tags: , ,

GDB Cheat Sheet 명령어 모음

GDB Cheat Sheet 명령어 모음

http://darkdust.net/files/GDB%20Cheat%20Sheet.pdf

 
Leave a comment

Posted by on May 1, 2012 in Linux, Research Related

 

Tags: , ,

Matplotlib Barchart Example


import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(4, 3), dpi = 80)
fig.subplots_adjust(left=0.2, bottom=0.2, right=0.9)
ax = fig.add_subplot(111)
ax.set_xlabel('X label')
ax.set_ylabel('Y label')

width = 0.4
rects1 = plt.bar([1,2,3], [2,3,4], width, color="b", label='d')
rects2 = plt.bar(np.array([1,2,3]) + width, [5,6,7], width, color="r")

plt.xticks(np.array([1, 2, 3]) + width,["a", "b", "c"])

ax.legend( (rects1, rects2), ('Men', 'Women') )

plt.savefig("barchart.png")
plt.show()

 
Leave a comment

Posted by on April 28, 2012 in Matplotlib, Python

 

Tags: , ,

Disksim with SSD extension

 
Leave a comment

Posted by on April 28, 2012 in Flash Memory, Research Related

 

Tags: , , ,

갤럭시 S3 티져 공개하다

갤럭시 S3가 곧 판매가 되려나 봅니다.

http://www.thenextgalaxy.com/ 갤럭시 티져 사이트에 접속하면 다음과 같은 퀴즈화면이 나오죠.

뒤죽박죽 섞여있어서 해맸는데 뻔한 단어가 답이네요.

TheNextGalaxy 가 답이네요.

 

끝나기전의 모습은 마치 아이폰 사용자들을 비유하는듯한 모습입니다. 양들 처럼 길들여졌다 그럼 뜻인가?

초반에 안드로이드계열의 스마튼폰이 아이폰에 비해 여러부분에서 뒷 쳐져 있었지만,
근래에 갤럭시 노트등을 써보니 이제 많이 따라 온것처럼 보입니다.

앞으로 갤럭시 S3가 어떤 모습으로 나타날지 기대 해봐야 겠네요.

 
Leave a comment

Posted by on April 24, 2012 in Android

 

리눅스 커널을 분석하기 좋은 사이트

리눅스 커널을 분석하기 좋은 사이트를 발견을 하였다.
아래 그림과 같이 전체적인 자료구조들을 예쁘게 시각화(Visualization)하였다.
자료구조는 커널의 프로세스, 메모리, 파일 시스템등 다양하게 분석할 수 있다.

http://www.makelinux.net/kernel_map/

 
Leave a comment

Posted by on April 20, 2012 in Linux Kernel

 

Tags: ,