You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
Function not returning full matrix
1 view (last 30 days)
Show older comments
I have a matrix around 20,000 by 20 and when I use this codes it only returns 1000 by 20. I'm sure the problem has to be on the for loop I just don't know how to get this function to show me the whole matrix.
function ....
i=length(data_2);
for i=1:data_2
fprintf...
.....
end
end
13 Comments
Jos (10584)
on 8 Dec 2017
These two lines are weird (and wrong)!
i=length(data_2);
for i=1:data_2_
I think you want something like
N = numel(data_2_)
for i=1:N
Rafael
on 8 Dec 2017
Edited: Rafael
on 8 Dec 2017
numel fixed the problem. However, now I'm getting another problem since I changed
i=length(data_2) to N=numel(data_2)
The errors says, Index exceeds matrix dimensions.
Error in project (line6)
fprintf('%5.0f', data_2(i,1));
If I change the i to an N it says the same thing as if I leave it as an i.
James Tursa
on 8 Dec 2017
Please show the current entire code snippet that is causing the problem.
Rafael
on 8 Dec 2017
function [i]=table(data_2)
clc
fprintf('A B C D E F G H I J K L M N O P\n');
N=numel(data_2);
for i=N
fprintf('%1.0f',data_2(i,1));
fprintf('%1.0f',data_2(i,2));
fprintf('%1.0f',data_2(i,3));
fprintf('%1.0f',data_2(i,4));
fprintf('%1.0f',data_2(i,5));
fprintf('%1.0f',data_2(i,6));
fprintf('%1.0f',data_2(i,7));
fprintf('%1.0f',data_2(i,8));
fprintf('%1.0f',data_2(i,9));
fprintf('%1.0f',data_2(i,10));
fprintf('%1.0f',data_2(i,11));
fprintf('%1.0f',data_2(i,12));
fprintf('%1.0f',data_2(i,13));
fprintf('%1.0f',data_2(i,14));
fprintf('%1.0f',data_2(i,15));
fprintf('%1.0f',data_2(i,16));
fprintf('\n')
end
end
James Tursa
on 8 Dec 2017
See the Answers below to fix your problem. E.g.,
N = size(data_2, 1);
Rafael
on 8 Dec 2017
What do you mean in plain English. It's exactly what I said. I created a function that puts label on top of each columns. The problem is that it's not returning the whole matrix when I call it. It only returns 1000 by 20 matrix instead of the 20,000 by 20. So, when I use size(data_2,1) it only returns the last row of the matrix.
Rafael
on 8 Dec 2017
I know it sounds confusing. If you'd see it you would understand what I am trying to do.
To make it clear. I have an array or matrix that has 20,000 rows and 20 columns. When I call the matrix which is called data_2 it returns the whole matrix like this,
Column 1 through 13
.................
Column 14 through 20
.................
I created a function which organize the matrix and puts label on top of each columns like this,
A B C D E F G...
1 2 3 4 5 6 7...
1 2 3 4 5 6 7...
So, the problem is that when I created this function and I called it returns only 1000 rows and 20 columns. It is not returning the whole matrix which is what I want.
function ....
i=length(data_2);
for i=1:data_2
fprintf...
.....
end
end
If I use,
i=size(data_2,1)
n=1:i
It only returns the last row from the matrix.
Rafael
on 8 Dec 2017
Yes, I understand you were just giving me an example. I did have something inside that, but it is not returning on top of the columns. I copy you exact code for fprintf.
The order is from 10 13 7 up to row 20,000 for rows and columns is from 1 to 20. These codes returned it as 39 3 41 etc.
Rafael
on 9 Dec 2017
The table is something like this, It goes from column 1 to 20 and row 1 to 20,000.
1 2 3 4 5 6 ... 20
10 13 17 43 76 42... 23
.
.
.
20,000
What I explained is that when I run the code you provided me, it returns those numbers in a different order like this,
1 2 3 4 5 6 ... 20
39 3 41 43 9 56... 1
.
.
.
18,390
Accepted Answer
Rafael
on 10 Dec 2017
Okay, now when I do which cssm is working. It tells me where it is saved.
5 Comments
Rafael
on 10 Dec 2017
The issue is when I tried to run your code,
colh = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T'};
data = permute( reshape( (1:120), 20,6 ), [2,1] );
fprintf( 1, [repmat( '%4s, ' , 1,20 ),'\n'], colh{:});
fprintf( 1, [repmat( '%4.0f, ', 1,20 ),'\n'], data );
This returns a 6 rows and 20 columns matrix with the strings on top. So, when I tried to run this,
cssm(data,colh)
It returns, Error using cssm Too many input arguments.
Rafael
on 10 Dec 2017
function [colh]=cssm( data_2)
clc
colh = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P'};
fprintf( [repmat( '%4s, ', 1,16 ),'\n'], colh{:} )
N = size( data_2, 1 );
for ii = 1 : N
fprintf([repmat('%4.0f, ',1,16),'\n'], data_2(ii,:))
end
end
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)