Matlab Linspace Problem: How to Control Ky-Points in Loops | Error Fix

  • Context: MATLAB 
  • Thread starter Thread starter hokhani
  • Start date Start date
  • Tags Tags
    Matlab
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 2K views
hokhani
Messages
606
Reaction score
22
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?
 
Physics news on Phys.org
Next time, please enclose your code in the proper "CODE" tags:
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
 
  • Like
Likes   Reactions: 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.
 
hokhani said:
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.

hokhani said:
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).