Kotlin Language Features Related to Null Handling

Any software engineer with a Java background would find the null handling features in the Kotlin language interesting. Let's summarize this topic with some examples. Nullable types: In Kotlin, types are non-nullable by default. If you want a variable to be able to hold a null value, you need to explicitly declare its type as nullable using the Type? syntax. For example, String? denotes a nullable string, while String represents a non-nullable string. Safe calls (?.): Kotlin introduces the safe call operator (?.) for handling nullable types. It allows you to safely invoke a method or access a property on a nullable object. If the object is null, the expression returns null instead of throwing a NullPointerException. Example: data class Person(val name: String, val age: Int, val address: String?) fun main() {     // Create a person with a nullable address     val person1 = Person("John Doe", 25, "123 Main Street")     val person2 = Person("Jane Doe", 30,...

Do you speak MATLAB?

MATLAB is a programming platform designed specifically for engineers and scientists. I first used it for a masters degree course on image processing. And now, I'm looking at it for the purpose of machine learning. Now lets remember what we can do with it:
Matlab has a command line and also you can save your scripts as .m files. You should define your functions and save them as .m files.

Note: If you put a semicolon to the end of the expression, the output is not shown in the console.

Lets create a 3 x 3 matrix:

A = [1, 2, 3; 0, 0, 0; -1, -1, -1]

Lets create a vector:

V = [2, 3, 6, 7]

Lets create a column vector:

V = [2; 3; 4; 5]


Lets draw a diagram with some values:

X = [1,2,3,4,5];
Y= [0,-1,3,4,8];
plot(X,Y)

How to define a function?

function y = myFunction(x)
    y = x^2 + x + 1;
end

From command line:

result = myFunction(6);

Lets create a uniformly spaced vector. 

V1 = 1:10
V2 = 1:10
plot(V1, V2)

We can also specify the interval:

A = 0;
B = 100;
C = A : 10 : B;

Be cautious about using whether matrix operator or element-wise operator:
In other words, there is a difference between ^ and .^  operators. The latter is the element wise power.

x = -2 : 0.1 : 2;
y = x.^2 + x + 1;
plot(x,y)

Commands for saving and loading data

"who" command shows the defined variables
"whos" command shows the variables and their properties (size etc.)

Lets save a variable, clear it and then load it again:

A = [1, 2, 3: 4, 5, 6];
who
save myVariables.mat A;
clear A;
load myVaribles.mat;
who
whos

Lets append a column to an existing matrix:

A = [1,2,3 ; 4,5,6]
A = [A , [0;0]]

Lets concatanate two matrices:

A = [10 20; 30 40]
B = [0 0 ; 0 0]
C = [A B]
D = [A ; B]

Element wise square:

E = A .^ 2

Matrix multiplication and element-wise multiplication

B = [1, 2 ; 3, 4]
A * B
A .* B

Comments

Popular posts from this blog

Trie Data Structure and Finding Patterns in a Collection of Words

Virtual Memory

NOTES ON COMPUTER ARCHITECTURE: Some important concepts in computer architecture