Showing posts with label Octave. Show all posts
Showing posts with label Octave. Show all posts

Saturday, November 17, 2012

How-to: Install the Newest Octave 3.6.3 on Ubuntu (12.04)

Step-by-step:
  1. Add the following repository
  2. sudo add-apt-repository ppa:mtmiller/octave
  3. Install Update
  4. sudo apt-get update
  5. Install Octave
  6. sudo apt-get install octave
  7. Run Octave
  8. Octave -q 
    KISS ! (Keep It Simple St*pid)

Friday, January 13, 2012

Image Compression in GNU Octave and Matlab

Suppose you have an image file namely "image.jpg". Due to the file size, you want to compress it to smaller size. In GNU Octave and Matlab, the following simple commands can be used,
image=imread('image.jpg');

imwrite(image,'image_new.jpg','quality',50);
Those commands will compress "image.jpg" to "image_new.jpg" with the quality of compressed image is 50% of the original image.Please note, the current supported image format. when I wrote this article, is .jpg only.

Monday, November 07, 2011

Play Sound/Audio File such as .wav in GNU / Octave

In octave, there is not function like wavplay or sound such in Matlab. Octave has own function to play audiofile i.e playaudio, but it is never work for me. Instead of repair the playaudio function in Octave, below is simple script function to play sound file in Octave.

Please copy the code below and paste to your PC (work on Ubuntu Linux) as playsound.m

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% This function play the singal x as a sound.
% playsound(x, fs, bits)
%  x : a signal vector
%  fs: sampling frequency in Hz
%  bits: quantization bits
%
% If encounter a error, try to transpose a signal vector,
% like playsound(x',fs,bits)

function playsound(x,fs,bits)
if (nargin != 3)
  usage("playsound(x,fs,bits)");
endif

 file= strcat(tmpnam(),".wav");
 wavwrite(file,x,fs,bits); 
 system(sprintf("/usr/bin/paplay %s ; rm -f %s",file,file));
endfunction
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Tuesday, October 18, 2011

Generating White Noise Sound on Octave / Matlab


The following white noise sound was generated with GNU Octave's random number generator rand(), which generates uniformly distributed random values in the interval [0,1). The wavwrite() function expects values in [-1.0, 1.0), so we multiply by 2 and shift down by 1. So to generate 10 seconds of noise sampled at 48 kHz:
white=rand(48000*10,1)*2-1;
I'm not sure about the inner workings of /dev/urandom, but I used the "reseed" command to feed it data from random.org, so this should be pretty random. To export this to a 16-bit, 48 kHz .wav file in our home directory, the command is:

Tuesday, October 11, 2011

Tutorial Octave: Open Source Software Pengganti Matlab

Pada posting sebelumnya telah dibahas bagaimana cara meng-install Octave di Ubuntu Linux. Artikel ini adalah lanjutannya, yaitu bagaimana menggunakan Octave yang tidak ditujukan untuk Linux saja namun juga pada Windows dan Mac OS. Seperti halnya Matlab, Octave bisa digunakan untuk melakukan perhitungan operasi matematika secara langsung. Misalnya operasi penjumlahan ‘+’, pengurangan ‘-’, perkalian ‘*’, pembagian ‘/’ dan operasi lainnya yang lebih kompleks seperti penggunaan fungsi trigonometri (sin, cos), pangkat ‘^’, eksponensial ‘e’, logaritma ‘log’, bilangan imajiner atau untuk mendevelop fungsi operasi baru (function seperti dalam Matlab).

Untuk menjalankan octave pada Ubuntu silahkan ketik "octave" pada terminal. Operasi matematika sederhana dengan Octave bisa dilihat pada contoh di bawah.

>> a=5
a =  5
>> b=7
b =  7
>> c=a+b
c =  12

Pada kondisi tertentu kadang tidak diharapkan untuk langsung mengetahui hasil dari suatu operasi terutama bila kita mencoba menuliskan script. Untuk menahan agar octave tidak menampilkan hasil operasi pada sebuah baris ditambahkan semicolon pada akhir baris.

Instalasi Octave di Ubuntu Linux

Beberapa postingan terakhir dalam blog ini, selain menyertakan Matlab juga ada versi Octave-nya. Nah apa itu octave? Octave adalah versi open source dari matlab yang hampir sepenuhnya kompatibel dengan matlab. Termasuk juga penamaan file berupa: .m dan .mat

Octave dikembangkan oleh John E. Weaton di University of Wisconsin Madison. Awalnya software tersebut dibuat sebagai pelengkap textbook kuliah chemical reactor design. Namun kini octave digunakan oleh berbagai bidang termasuk signyal processing. Di kampus saya sendiri Octave menjadi program wajib, dan ada kelas/course-nya pula..

OK, pada ubuntu untuk mengintall Octave cukup mudah, yakni sebagai berikut:
sudo apt-get install octave
Seperti halnya Matlab, Octave membutuhkan toolbox dan program lain. Sebagi contoh untuk pemrosesan sinyal audio, image dan plot kita membutuhkan octave-signal, octave-audio, octave-image dan gnuplot. So, install program tambahan tersebut,

Menyimpan data .wav/.mat dalam format ASCII di Matlab / Octave

ASCII - American Standard Code for Information Interchange merupakan format standar data yang berupa text yang akan memudahkan kita untuk memprosesnya dalam program dan OS apapun. Nah, bagaimana menyimpan data kita dalam format ASCII ? Caranya adalah dengan menyimpan anda dalam workspace Matlab atau Octave, kemudian simpan sebagai file format ASCII dengan perintah berikut ini. (Mungkin juga berlaku untuk selain data .wav dan .mat, yakni data berekstensi lain .xml dll, sekali lagi load dulu ke workspace-nya matlab/Octave).

Dalam Matlab,
x=wavread('nama_file.wav');                      % load file wav anda

save namafiletxt x -ASCII


jika data anda berupa .mat

load data

save namafiletxt x -ASCII                           % load file mat


Dalam Octave, ganti -ASCII menjadi -ascii, sehingga menjadi sebagai berikut:

Monday, October 10, 2011

Menghitung SNR dengan Matlab / Octave

SNR- Signal to Noise Ration adalah ukuran untuk membandingkan suatu sinyal dengan noise-nya. SNR didefinisikan sebagai perbandingan power signal dengan power noisenya. Gampangannya, kalau power sinyal yang kita inginkan lebih kecil daripada noisenya, maka  hasil kita jelek (hasil apapun, entah dalam speech enhacement, source separation, image processing atau yang lain). Sehingga, semakin besar nilai SNR tentunya semakin baik kualitas desired signal kita.
Sesuai formulanya, SNR dirumuskan sebagai berikut;
$$SNR=\dfrac{P_{signal}}{P_{noise}}$$
dimana P merupakan power rata-rata baik dari sinyal maupun noise yang diukur pada t yang sama dan dalam bandwith yang sama. Jika sinyal dan noise memiliki impedansi yang sama, maka SNR dapat dihitung dari kuadrat Amplitudo kedua sinyal dan noise tersebut. Agar mempunyai impedansi yang sama, pada praktek penghitungan SNR dengan matlab/Octave nilai SNR dinormalisasi dengan perintah norm
.
dimana A merupakan root mean square (rms) dari amplitudo sinyal. Karena banyak sinyal memiliki dynamic range, maka SNR dapat dinyatakan dalam decibel (dB) sebagai berikut:
Related Posts Plugin for WordPress, Blogger...