How do i use for to populate matrix
Show older comments
iv'e run this code bust i get the error message below. Index exceeds matrix dimensions.
Error in Import_dat_files (line 20) x(j,:) = A((j-1)*nx+1:j*nx,1);
Can anyone help please this is the code below
filename= 'B00049.dat';
delimiterIn= ' ';
headerlinesIn = 3;
A = importdata(filename,delimiterIn,headerlinesIn);
%% Matrices%%%%
xi = 214; yj = 134;
x= zeros(yj,xi);
y= zeros(yj,xi);
u= zeros(yj,xi);
v= zeros(yj,xi);
%% Matrix population
for j=1:xi x(j,:) = A((j-1)*xi+1:j*xi,1);
y(j,:) = A((j-1)*xi+1:j*xi,2);
u(j,:) = A((j-1)*xi+1:j*xi,3);
v(j,:) = A((j-1)*xi+1:j*xi,4);
end
1 Comment
Dennis
on 31 Jul 2018
When j is 214 you try to access A((214-1)*214+1:214*214,2)), which is A(45583:45796,2). My guess is that A is smaller than that.
Accepted Answer
More Answers (1)
Ernest Adisi
on 31 Jul 2018
0 votes
2 Comments
Guillaume
on 31 Jul 2018
Please don't use 'Answer this question' for comments.
I would still recommend you change your variable names to more meaningful names to avoid this sort of bugs
And certainly, replace your slooow for loop with the fast reshape I have given.
Ernest Adisi
on 31 Jul 2018
Categories
Find more on Creating and Concatenating Matrices 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!