How can I reverse the direction of the rows and columns using printmat?

11 views (last 30 days)
When I use this code:
Depth_of_cut = [1, 2, 3, 4];
Feedrate = [0.1, 0.2, 0.3, 0.4];
Fv = magic(4);
printmat(Fv,'Tangential Force, N', num2str(Depth_of_cut), num2str(Feedrate))
The result will be:
Tangential Force, N =
0.1 0.2 0.3 0.4
1 16.00000 2.00000 3.00000 13.00000
2 5.00000 11.00000 10.00000 8.00000
3 9.00000 7.00000 6.00000 12.00000
4 4.00000 14.00000 15.00000 1.00000
But I want it to be like:
Tangential Force, N =
4 4.00 14.00 15.00 1.00
3 9.00 7.00 6.00 12.00
2 5.00 11.00 10.00 8.00
1 16.00 2.00 3.00 13.00
0.1 0.2 0.3 0.4
So basically I would like to: 1. Reverse the rows to be started from the bottom to the top (The matrix and the rows numbers). 2. Put the columns numbers in the bottom of the table. 3. If there is a way to control the decimal using printmat would be good, otherwise it will be ok.
Thanks a lot,

Accepted Answer

Image Analyst
Image Analyst on 2 Jul 2015
Check out the flipud() function.
  3 Comments
Image Analyst
Image Analyst on 3 Jul 2015
What are the column names? If you're printing to the command window, you can simply use fprintf() to print whatever you want:
fprintf('Column 1 Column 2 Column 3 Column 4 Column 5'\n');
Haitham
Haitham on 5 Jul 2015
The columns names are: 0.1, 0.2, 0.3 and 0.4 which is the Feedrate values. These values should be entered by the user in terms of the number and the values itself, so we do not know how many columns (number of values) and the values itself. Thus, using fprintf function is not an option as the number of the columns are subjected to change.
By the way, the flip function can be used with both, the matrix and the string as:
printmat(flip(Fv),'Tangential Force, N', flip(num2str(Depth_of_cut)), num2str(Feedrate))

Sign in to comment.

More Answers (1)

Thorsten
Thorsten on 3 Jul 2015
Use my function printmapud:
function printmapud(a,name,rlab,clab)
T = evalc('printmat(flipud(a),name,fliplr(rlab),clab);');
C = regexp(T, '\n', 'split');
ind = [1 2 4:numel(C)-2 3 numel(C)-1 numel(C)];
for i = ind
disp(C{i})
end
  4 Comments
Haitham
Haitham on 6 Jul 2015
Edited: Haitham on 6 Jul 2015
Oh no! what a mistake! I tried it again and it works well, my mistake, sorry about that. The function works well until 5 columns but when it comes to more than 5 columns it will mess up. Thank you.
Thorsten
Thorsten on 7 Jul 2015
Edited: Thorsten on 7 Jul 2015
Thank you for re-testing my function. Short comment on the why it "messes up", as you call it: For more than 5 columns it "messes up" by inserting a line break, same as printmat.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!