MATLAB Answers

Looking for suggestions on cleaning up my program

1 view (last 30 days)
Michael Purcell
Michael Purcell on 7 Jul 2011
Hey forum, this is my first post. I am re-learning MATLAB, currently working my way through a textbook from a few semesters ago. The textbook is an older edition and supposedly leaves out a lot of new MATLAB functions- also, I'm still a beginner at programming. I have created a program that I'd like to keep building and editing as I learn more and more stuff. Is there anything in the code that really sticks out as unnecessary or inefficient?
% Matrix Creator
% This script file creates a matrix using for loops and alters them using a switch function.
clc;
fprintf('The following program will ask for matrix dimensions and then prompt\n you to enter the matrix elements, by row then by column.\n');
ma=input('Enter the number of rows you would like matrix A to have: ');
na=input('Enter the number of columns you would like matrix A to have: ');
A=zeros(ma,na);
fprintf('\n')
%After taking user input for the number of columns and rows of Matrix A
%(the user will be prompted to create a matrix B later), the following
%loop is used to collect input for each individual element of the matrix.
for r=1:ma
for c=1:na
fprintf('\tEnter row %i, column %i:',r,c)
A(r,c)=input('');
end
fprintf('\n')
end
A
fprintf('\n')
m2=input('Would you like to work with another matrix? (y/n):','s');
if strcmpi(m2, 'y')==1
mb=input('Enter the number of rows you would like the second matrix to have: ');
nb=input('Enter the number of columns you would like the second matrix to have: ');
B=zeros(mb,nb);
fprintf('\n')
for r=1:mb
for c=1:nb
fprintf('\tEnter row %i, column %i:',r,c)
B(r,c)=input('');
end
fprintf('\n')
end
B
else
disp('Now to work on the matrix...')
end
%At this point, the plan is to prompt the user to do one of many operations
%on the matrix/matrices, which will be done using a switch case command.
fprintf('\nAt this point, you may choose from the following operations to perform')
fprintf('on the matrix:\n* = Matrix must be square\n** = Matrix dimensions')
fprintf('must fit\n\t1 - transpose\n\t2 - determinant**\n\t3 - inverse**\n\t')
fprintf('4 - square**\n\t5 - square each element\n')
d=input('Enter choice: ');
cm=input('Enter which matrix(A or B) to perform operation on: ','s');
switch cm
case {'a','A'}
switch d
case 1
C=A';
case 2
if ma==na
C=det(A);
else
disp('Error, the matrix is not square')
end
case 3
if ma==na
C=inv(A);
else
disp('Error, the matrix is not square')
end
case 4
if ma==na
C=A^2;
else
disp('Error, the matrix is not square')
end
case 5
C=A.^2;
end
case {'b','B'}
switch d
case 1
C=B';
case 2
if mb==nb
C=det(B);
else
disp('Error, the matrix is not square')
end
case 3
if mb==nb
C=inv(B);
else
disp('Error, the matrix is not square')
end
case 4
if mb==nb
C=B^2;
else
disp('Error, the matrix is not square')
end
case 5
C=B.^2;
end
end
C

Answers (1)

D
D on 7 Jul 2011
I'm sure there are other more important things, but
if strcmpi(m2, 'y')==1
could be replaced by
if strcmpi(m2, 'y')
Also, if you could insert blank lines in your code, it would be easier to read.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!