# Why do I receive error for reshape function?

1 view (last 30 days)
Ryan on 7 Jun 2021
Commented: Ryan on 7 Jun 2021
I am using the following code below, however, I keep getting geting the error message for reshape function. How would the code or reshape function be changed to stop the error?
>> s = 1/sqrt(2);
A = [1 1 1 0 0 0 0 0 0; 0 0 0 0 0 0 1 1 1; 1 0 0 1 0 0 1 0 0; 0 0 1 0 0 1 0 0 1; s s 0 s 0 0 0 0 0; 0 0 0 0 0 s 0 s s; 0 0 0 s 0 0 s s 0; 0 s s 0 0 s 0 0 0];
b = [6; 24; 12; 18; 4.9497; 16.2634; 13.4350; 7.7781];
k = 1:20;
X = kaczmarz(A,b,k);
figure(1)
for i=1:kmax, subplot(4,5,i), imagesc(reshape(X(:,i),N,N)), end
Error using reshape
Number of elements must not change. Use [] as one of the size inputs
to automatically calculate the appropriate size for that dimension.
Ryan on 7 Jun 2021
I've checked the size of X:
size(X)
ans =
9 7
>> N*N
ans =
4096
What would I need to change X size to be to get figure(1)?

KSSV on 7 Jun 2021
The number of elements in X(:,j) is not equal to N*N, thats why you are getting error.
N = 3 ;
X = rand(10) ;
x = reshape(X(:,1),N,N) ; % this will lead to error
Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that dimension.
See to it that the number of elements should not change. You may use imresize to achieve this.
[m,n] = size(X) ;
X = imresize(X,[N*N,n]) ;
imagesc(reshape(X(:,1),N,N)) ; % this will work
Ryan on 7 Jun 2021
Great! All working now, thanks for the help!

R2020b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!