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

8 visualizzazioni (ultimi 30 giorni)
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,

Risposta accettata

Image Analyst
Image Analyst il 2 Lug 2015
Check out the flipud() function.
  3 Commenti
Image Analyst
Image Analyst il 3 Lug 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 il 5 Lug 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))

Accedi per commentare.

Più risposte (1)

Thorsten
Thorsten il 3 Lug 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 Commenti
Haitham
Haitham il 6 Lug 2015
Modificato: Haitham il 6 Lug 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 il 7 Lug 2015
Modificato: Thorsten il 7 Lug 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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by