Linspace problem in Matlab

  • MATLAB
  • Thread starter hokhani
  • Start date
  • #1
443
7

Main Question or Discussion Point

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?
 

Answers and Replies

  • #2
DrClaude
Mentor
7,166
3,308
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
 
  • #3
443
7
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.
 
  • #4
DrClaude
Mentor
7,166
3,308
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).
 

Related Threads on Linspace problem in Matlab

  • Last Post
Replies
13
Views
2K
Replies
6
Views
2K
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
2
Views
1K
  • Last Post
Replies
2
Views
3K
  • Last Post
Replies
2
Views
2K
Replies
4
Views
3K
Replies
1
Views
2K
Replies
2
Views
4K
  • Last Post
Replies
4
Views
8K
Top