# Linspace problem in Matlab

• MATLAB
The following Matlab program

clc
clear all
for ef=1:100
ky=linspace(-ef,ef,ef*2);
for n=1:3
r(n,:)=2*ky;
end
end

encounters this error:

??? Subscripted assignment dimension mismatch.

Error in ==> testarrays at 6
r(n,:)=2*ky;

But if I use ky=linspace(-ef,ef); there is no error! why?
In other words, what should I do to control the number of ky-points in each loop?

DrClaude
Mentor
Code:
clc
clear all
for ef=1:100
ky=linspace(-ef,ef,ef*2);
for n=1:3
r(n,:)=2*ky;
end
end

I guess you are doing something with r after the inner loop, otherwise your code doesn't make sense.

The problem is that the size of r is set the first time around, and won't adjust as the length of ky increases as ef changes. You need to reassing r to an array of the proper size:
Code:
clc
clear all
for ef=1:100
ky=linspace(-ef,ef,ef*2);
r = zeros(3,size(ky,2));
for n=1:3
r(n,:)=2*ky;
end
end

• hokhani
Thank you very much. But I can't understand why I have to reassign the size of r in each loop? Why this problem doesn't happen for ky?
I would be grateful also if you tell me how to write in "CODE" tags.

DrClaude
Mentor
Thank you very much. But I can't understand why I have to reassign the size of r in each loop? Why this problem doesn't happen for ky?
Because for ky, as for r in my version, the entire variable gets reassigned. When you write r(n, : ), the size of r is fixed: the ":" will be replaced by the indices from 1 to the second dimension of r.

I would be grateful also if you tell me how to write in "CODE" tags.

Just use
[C O D E]
some code
[/C O D E]
(without the spaces between the letters in CODE).