How do I use fprintf to show the entire array in one ouput statement
257 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Josua Mensah
am 5 Apr. 2017
Kommentiert: Tunc Durmaz
am 1 Jun. 2019
>>
A = [-4 2 -7 6 8; 4 -5 8 -1 0; 0 -4 3 1 10; -8 7 -10 5 -2];
[rows cols] = size(A);
Z = zeros(size(A));
for x = 1:1:rows
for y = 1:1:cols
if A(x,y) <= 4
Z(x,y) = A(x,y);
end
end
end
fprintf('%i\n',Z);
My ouput statement I am getting is
-4
4
0
-8
2
-5
-4
0
-7
0
3
-10
0
-1
1
0
0
0
0
-2
Instead of
-4 2 -7 0 0
4 -5 0 -1 0
0 -4 3 1 0
-8 0 -10 0 -2
0 Kommentare
Akzeptierte Antwort
Jan
am 5 Apr. 2017
Bearbeitet: Jan
am 5 Apr. 2017
fprintf('%i %i %i %i %i\n', Z.');
or:
fprintf('%4i %4i %4i %4i %4i\n', Z.');
Note that the matrix must be transposed, because the elements are store columnwise, but the display is written in rowwise order.
By the way: It is easier without loops:
Z = zeros(size(A));
index = (A <= 4);
Z(index) = A(index);
Or:
Z = A;
Z(Z > 4) = 0;
Weitere Antworten (2)
Jay Stanley
am 1 Jun. 2019
Tunc Durmaz,
If you do not know the dimension of your array you can get its size and replicate a template based on those dimensions
Here's a minimum working example
matrix = magic(4) % example matrix
[mrows, ncols] = size(matrix)
outputstr = ['%' num2str(mrows) 'i '] % template for the string, you put your datatype here
outputstr = repmat(outputstr, 1, ncols) % replicate it to match the number of columns
outputstr = [outputstr '\n'] % add a new line if you want
fprintf(outputstr, matrix.') % write it
For completeness sake there is another trivial solution that does not use repmat via the loop
matrix = magic(4) % example matrix
[mrows, ncols] = size(matrix)
outputstr = ['%' num2str(mrows) 'i ']
template = ['%' num2str(mrows) 'i '] % template for the string, you put your datatype here
outputstr = template
for i = 2:mcols
outputstr = [outputstr template]
end
outputstr = [outputstr '\n'] % add a new line if you want
fprintf(outputstr, matrix.') % write it
1 Kommentar
Tunc Durmaz
am 13 Mai 2019
What if we do not know the dimension of Z? Any way to address this in fprintf?
Cheers,
0 Kommentare
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!