hi every one , how can i do a for cycle with diffrent vector length , thank you
조회 수: 1 (최근 30일)
이전 댓글 표시
clear all
clc
X=rand(17,1)
Y=rand(31,1)
Z=rand(28,1)
K=rand(31,1)
n=31
for i=1:n
A=[X(:,n) , Y(:,n) ,Z(:,n) ,K(:,n)];
AT{1,n}= inv(A{1,n}'*A{1,n})*A{1,n}';
end
댓글 수: 2
Rik
2019년 6월 5일
What do you mean? You aren't using standard Matlab terms, nor are you describing any errors, nor what your goal is. Have a read here and here. It will greatly improve your chances of getting an answer.
I do notice that your vectors have different lengths, yet you want to put them together? What should A look like when n is 18? Should it be a 3-element vector?
And why are you selecting all rows and non-existant later columns for n>1? And why are you using curly braces on a non-cell array?
채택된 답변
Rik
2019년 6월 6일
You can put them in a cell array and let cell2mat handle the removal of empty elements. I have no clue what you want to do with that variable inside your loop, so I replaced it with sum to have a proof of principle. (also, no need for clear all)
X=rand(17,1);
Y=rand(31,1);
Z=rand(28,1);
K=rand(31,1);
A=cell(numel(X),4);
A(1:numel(X),1)=num2cell(X);
A(1:numel(Y),2)=num2cell(Y);
A(1:numel(Z),3)=num2cell(Z);
A(1:numel(K),4)=num2cell(K);
AT=zeros(1,size(A,1));
for n=1:size(A,1)
B=A(n,:);B=cell2mat(B);
AT(n)= sum(B);
end
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!