How to add values from vertcat to a script

조회 수: 1 (최근 30일)
Tipu Sultan
Tipu Sultan 2019년 4월 26일
편집: Stephen23 2019년 4월 29일
I have script which calls a function and the return values of the function are stored in this way:
M = vertcat(C{:});
C is 1*99 cell and each cell has 4 values.Now I want to store individual value of 1st column to an array 2nd column to another array and so on.So is it possible to do so?
  댓글 수: 11
Tipu Sultan
Tipu Sultan 2019년 4월 29일
Thanks @stephen.
I changed the code as follows:
D = 'C:\Users\Tipu_Standard\Desktop\My_project_cropped_images1';
S = dir(fullfile(D,'Original*.jpg')); % pattern to match filenames.
N = numel(S);
C = cell(1,N);
for k = 1:N
F = fullfile(D,S(k).name);
I = imread(F);
%C{k} = fun1(I);
Zvec = zeros(1,20);
Dvec = zeros(1,20);
Avec = zeros(1,20);
[Zvec(k),Dvec(k),Avec(k)] = fun1(I);
end
M = vertcat(C{:});
Command window gives me following error:
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in funCall (line 12)
[Zvec(k),Dvec(k),Avec(k)] = fun1(I);
Is there any problem that I am not able to locate!
Stephen23
Stephen23 2019년 4월 29일
편집: Stephen23 2019년 4월 29일
Move the preallocation before the loop (just like the preallocation documentation shows):
D = 'C:\Users\Tipu_Standard\Desktop\My_project_cropped_images1';
S = dir(fullfile(D,'Original*.jpg')); % pattern to match filenames.
N = numel(S);
Zvec = zeros(1,N);
Dvec = zeros(1,N);
Avec = zeros(1,N);
for k = 1:N
F = fullfile(D,S(k).name);
I = imread(F);
[Zvec(k),Dvec(k),Avec(k)] = fun1(I);
end
You will also need to adjust the sizes of the output arrays AND the indexing to suit the sizes of the output arguments: if they are non-scalar then you will continue to get errors.
I do not have your data, you will have to check this yourself. After that, adjust the sizes of the output arrays. If the sizes change on between iterations, use cell arrays for the appropriate array/s (in fact if you just want to get your code working, use cell arrays for all three outputs).

댓글을 달려면 로그인하십시오.

답변 (1개)

madhan ravi
madhan ravi 2019년 4월 26일
Wanted = num2cell(M,1)
[a,b,c,d]=deal(Wanted{:})
  댓글 수: 3
madhan ravi
madhan ravi 2019년 4월 26일
That seems like a different question , I answered to the question you originally asked. It’s better you post it as a separate question.
Tipu Sultan
Tipu Sultan 2019년 4월 28일
@madhan I posted the question but it was closed due to duplicate!
So please help me with the problem.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

제품


릴리스

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by