Sei sulla pagina 1di 4

Math tools > Comparison of C and MATLAB

You can see that the general logic is the same but the syntax is different. Most
importantly, MATLAB makes computations with arrays much easier.

C code

MATLAB code
// declare a double precision variable
// then assign a value

double a;
a = 5.0;

% variables are not declared and are
% double precision by default

a = 5.0;
// repeat which assigns values to
// array elements

for(i=1; i<=10; i++)
A[i] = i;

% i = start:increment:end
% where increment = 1 is default

for i=1:10
A(i) = i;
end

// repeat which prints a series of
// values

for(i=0; i<=10; i += 2)
printf("%i \n", i);




for i=0:2:10
fprintf(' %i \n', i)
end

// initialize identity matrix


enum(N=100);
double B[N];
for(r=0;r<N;r++)
for(c=0;c<N;c++)
B[r][c] = 0.0;
for(r=0;r<N;r++)
B[r][r] = 1.0;

% MATLAB has functions for
% common array initializations

B = eye(100);

// declare and initialize an array

double C[3] = {1,2,3};



C = [1 2 3]; % or C = [1, 2, 3]
// declare and initialize an array

double C[4] = {2,4,6,8};

% array name = [start:increment:end];

C = [2:2:8];
// print an array element on screen

printf("%g \n", C[2]);



C(2) % no ending ; displays value
// declare and initialize an array
// with fixed interval between values




double C[4] = {2,4,6,8}; C = linspace(2,8,4)

% third param is optional and = #
points
% between and including 1st two points
% if third param left off, default
% is 100 points

// declare and initialize a 2D array


enum{Rows=3, Cols=3};
double D[Rows][Cols] = {{1,2,3},
{4,5,6},
{7,8,9}};

% these three examples accomplish the
% same thing

D = [1 2 3; 4 5 6; 7 8 9];
D = [1:3; 4:6; 7:9];
D = [1 2 3
4 5 6
7 8 9];

// print element of 2D array

printf("%g \n", D[2][2]);



D(2,2) % row 2, column 2
// print selected sub array of 2D
array

for(r=1; r<=2; r++)
printf("%g \n", D[r][1]);



D(1:2,1) % rows 1 to 2 of column 1
// print all rows of column 1 of 2D
// array

for(r=1; r<Rows; r++)
printf("%g \n", D[r][1]);




D(:,1) % all rows of column 1
// logical expression

double a = 1;
double b = 2;
if (a == 1 || b == 3)
printf("a = 1 or b = 3 \n");



a = 1;
b = 2;
if a == 1 || b == 3
fprintf('a = 2 or b = 3 \n');
end

// logical expresssion

if a == 1 && b != 3 {
printf("a=1 and b not 3 \n");
printf("OK? \n");
}



if a == 1 && b ~= 3
fprintf('a=1 and b not 3 \n');
fprintf('OK?');
end
// if structure

if a != 1
fprintf('a is not 1 \n');
else if b != 3
fprintf('b is not 3 \n');
else
fprintf('huh? \n');


if a ~= 1
fprintf('a is not 1 \n')
elseif b ~= 3
fprintf('b is not 3 \n')
else
fprintf('huh? \n')
end

// switch structure

switch a+b {
case 1:
printf("a+b = 1 \n");
break;
case 2:
printf("a+b = 2 \n");
break;
case 3:
printf("a+b = 3 \n");
break;
default:
printf("a+b > 3 \n");
}



switch a+b
case 1
fprintf('a+b = 1 \n')
case 2
fprintf('a+b = 2 \n')
case 3
fprintf('a+b = 3 \n')
otherwise
fprintf('a+b > 3 \n')
end
// program which calls a function




#include <stdio.h>
% variables defined outside a
% program unit are global
y = 1;
z = 2;

main(){
int b;

b = myfunc(3);

printf("%i \n", b);
}


// function definition can be in
// same file or separate file

int myfunc(int x){
int a;
a = x*y*z;
return(a);
}

% program and function definition must
% be in separate files and function
file
% must have same name as function

global y z
% declare global variables before
% first use
y = 1;
z = 2;




b = myfunc(3)

% function definition of myfunc
% must be in a separate file named
% myfunc.m (i.e., functionName.m)


LISTING OF FILE myfunc.m

function a = myfunc(x)

% function keyword, return variable
% = function name
(inputs)
%
% 1st continuous group of
% comments in a function are
% displayed when you enter 'help'
% and name of function in the command
% window

global y z
% declare global variables used
% in this file

a = x*y*z;
% return last value of return
% variable in file
% MATLAB functions can return an
% array

// matrix multiplication

// C = A*B

// where A is I rows by J columns
// B is J rows by K columns
// and C is I rows by K columns

// initialize matrix C so can
// accumulate sum in each C[i][k]

for(i=0; i<I; i++)
for(k=0; k<K; k++)
C[i][k] = 0;

// matrix multiplication, C = AB
for(k=0; k<K; k++)
for(i=0; i<I; i++)
for(j=0; j<J; j++)
C[i][k] += A[i][j] * B[j][k];



C = A*B;

Potrebbero piacerti anche