12 views (last 30 days)

surendra kumar Aralapura mariyappa
on 24 Jun 2019

Edited: surendra kumar Aralapura mariyappa
on 24 Jun 2019

Hey all,

I already asked this question in different way. But now I came up with my code instead of just explanation.

This is my user input matrix file:

function [Lambda, A, B, D] = Matrix_surendra13

n =7 ;

% Conductivity Matrix size preallocation

Lambda = ones(1,n);

% Area Matrix size preallocation

A = ones(n,n);

% Diameter matrix Size definition

D = ones (1,n);

%Width matrix Size definition

B = ones(1,n);

Lambda = [205 50.2 0.025893 79.5 0.180 7720 0.025893];

D = [ 55 55 0 55 0 55 0];

%Here you can see in cell array A , A{1,2} and A{2,1} are same. So I need to pass whole matrix as input arguments to the function in the slover.

A = { 0 [ 2375.80 4749.50 1457.25] 0 0 0 0 2375.80 ;

[ 2375.80 4749.50 1457.25] 0 2375.80 4749.50 0 0 1835.80;

0 2375.80 0 0 0 0 0;

0 4749.50 0 0 2375.80 4749.50 1835.80;

0 0 0 2375.80 0 0 0;

0 0 0 4749.50 0 0 2375.80 ;

2375.80 1835.80 0 1835.80 0 2375.80 0};

B = [ 25 30 0 20 0 35 0];

end

This is my solver:

function SampleModel13_Stat(Measuring_Data)

[Lambda, A, B, D] = Matrix_surendra13;

n = size(A,1);

m = size(A,2);

LA = zeros(n,m);

for i=1:n

for j=1:n

% for ii = 1: after colon, size of the matrix inside cell array

% for jj = 1: after colon size, of the matrix inside cell array, but I am not sure whether it is %correct or not to pass the matrix elements one by one at the same time.

%How to find the size of the matrix inside the cell array.

LA(i,j) = Leitwert_L_2_3(Lambda(i),Lambda(j), A{i,j}A(ii,jj), A{i,j}A(ii,jj), A{i,j}A(ii,jj), B(i),B(j));

%end

%end

LA(i,j)= Leitwert_L(Lambda(i), Lambda(j), A(i,j), B(i), B(j)); % this is fine for the rest of the things

end

end

disp(LA);

end

I have two questions.

First one is, How to find the size of the matrix inside the cell array. may be using length(A{1,2}, I will get only the length of row elements. but not the size of the matrix or using numel.

Second one is How to pass all the arguments of the matrix of the cell array A{1,2}, to a function in the slover.

Like below

A{1,2}A(1,1), A{1,2}A(1,2), A{1,2}A(1,3) %first element of the matrix is for A{1,2}A(1,1) and same for rest of the things.

A{2,1}A(1,1), A{2,1}A(1,2), A{2,1}A(1,3)

I don't know whether it is possible using for loop or not, but I am trying it still.

I hope that explantion is enough, if you still need an explantion, I am ready to give.

Any suggestions and answers would be much appreciated

Thanks in Advance

Bob Nbob
on 24 Jun 2019

In order to pass elements 'individually at the same time' you need to use something like parfor, which requires the parallel computing tool box, which is not something that I have any knowledge of. Is there a specific reason you need the individual elements at the same time, and not just sequentially?

If you are looking at them sequentially, then your four for loops will work fine, just use the size command I mentioned earlier.

for i = 1:size(A,1) % Each row of cells

for j = 1:size(A,2) % Each column of cells

for k = 1:size(A{i,j},1) % Row of cell contents

for m = 1:size(A{i,j},2) % Column of cell contents

tmp = A{i,j}(k,m);

end

end

end

end

Opportunities for recent engineering grads.

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

Start Hunting!
## 2 Comments

## Direct link to this comment

https://se.mathworks.com/matlabcentral/answers/468566-how-to-pass-a-matrix-of-cell-array-as-a-input-argument-to-a-function#comment_717647

⋮## Direct link to this comment

https://se.mathworks.com/matlabcentral/answers/468566-how-to-pass-a-matrix-of-cell-array-as-a-input-argument-to-a-function#comment_717647

## Direct link to this comment

https://se.mathworks.com/matlabcentral/answers/468566-how-to-pass-a-matrix-of-cell-array-as-a-input-argument-to-a-function#comment_717722

⋮## Direct link to this comment

https://se.mathworks.com/matlabcentral/answers/468566-how-to-pass-a-matrix-of-cell-array-as-a-input-argument-to-a-function#comment_717722

Sign in to comment.