[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Create & Calling list of Matrix name

From: Andrew Janke
Subject: Re: Create & Calling list of Matrix name
Date: Fri, 1 Mar 2019 21:57:13 -0500
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

On 3/1/19 5:39 PM, quocphantruong wrote:
My problem is about naming and calling set of matrix name using loop
1. Let say I have a large matrix X(100x2). Now I want to cut this matrix
into 20 sub-matrixes and naming them from A1 to A20, each has size(5x2)

2. Then I need to perform some operation hence, need to call out matrix Ai
(for i=1:20) then how should I call them out in loop.

I search and there is some solution:
   for i = 1:20
     eval (sprintf ("A%d = %d;", i, i));

Howevever, this seems does not work with matrix. And I dont get how the code
is doing, if you could help me explain that would be great
THank you

Working with multiple named variables using sprintf() and eval() is only going to bring you unhappiness. Instead of using 20 variables named A1, A2, ... A20, try using a single 20-long cell array named A, which you can index as A{1}, A{2}, ... A{20}.

For example:

X = meshgrid (1:2, 1:100);
n = 20;
A = mat2cell(X, repmat(n, [size(X,1)/n 1]), 2);

Now you can loop over them and do things like:

B = cell (size (A));
for i = 1:numel (A)
   B{i} = some_operation (A{i});

Or, more concisely, use cellfun:

B = cellfun (@(x) {some_operation (x)}, A);


reply via email to

[Prev in Thread] Current Thread [Next in Thread]