Why the matrix is changing from 10X10 to 1X100

2 views (last 30 days)
My question details in steps 1. generate 10X10 matrix, ones(10) 2. randomly select a site and change it to -1 3. repeat till all the 1 changes to -1 in the matrix. Thanks
clear all
format compact
nrows = 10
fm_layer = ones(nrows)
E_A = sum(sum(fm_layer))
n = numel(fm_layer);
for k=1:n
A(k) = -1
E_B = sum(sum(fm_layer))

Sign in to comment.

Answers (2)

Alexandra Harkai
Alexandra Harkai on 13 Oct 2016
Seems like a new array A is created and gets expanded at every iteration. Since the 'numel' of your matrix is 100 (=10*10), it loops through and creates an array of length 100, expanding it element-by-element.

Guillaume on 13 Oct 2016
If you want to replace the elements of fm_layer one by one in some random order then:
fm_layer = ones(nrows);
for idx = randperm(numel(fm_layer))
fm_layer(idx) = -1;
%do something with modifier fm_layer for this step

Community Treasure Hunt

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

Start Hunting!