need general coding/ command to separate matrix data

조회 수: 2 (최근 30일)
Muhammad Asad
Muhammad Asad 2022년 9월 6일
댓글: dpb 2022년 9월 7일
I have a for loop y= 0:2:8 and whenever the for loop value chnaged it generates two values which was stored in a matrix. Now I have a complete matrix in which column one have y=0 then several values in a rows then y changed and several vlaues in a row as shown in fig.
final matrix is:
0 5 9
0 7 3.3
0 5.5 9
1 4.0 3.5
1 2 3.3
...................... so on.
Question: I need a general coding that store number of rows in a seperate matrix/ vector when y value is fixed. I mean when y=0 then all rows with y=0 stored in a seperate vector/ matrix. Then again y changed and results in several rows. These rows stored in a seperate vector/matrix.
Your support will be highly appreciated.
Regards
  댓글 수: 4
Stephen23
Stephen23 2022년 9월 7일
Keeping data together is usually better than splitting it apart. How will you process the data?
Muhammad Asad
Muhammad Asad 2022년 9월 7일
Now I send you my coding but formula is shorter my formula to simpler. So, when v exceute it give us matrix of three column. Important is value of first column is fixed upto seperate rows. I need all those values in a seperate matrix. reason is that for a fixed value of beta there are certian values in column 2 and 3. I need to draw graph using these values. Then again beta change and i have certian set of values and i need again draw graph using "hold on" command.
If you undertsnad my question and you think another way to tackle this then please add your coding in it.
thanks in advance
clear all
c1= 0.4;
v=[];
betavalues= 0:2:4;
a= zeros(length(betavalues),1);
for i = 1:length(betavalues)
a(i)= betavalues(i);
beta=a(i)
lamdavalues= 1:1:10;
b= zeros(length(lamdavalues),1);
for j=1:length(lamdavalues)
b(j)= lamdavalues(j);
lamda=b(j);
x1= beta*lamdavalues*c1;
v(end+1,:)=[beta lamda x1];
end
end

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

채택된 답변

Bruno Luong
Bruno Luong 2022년 9월 7일
편집: Bruno Luong 2022년 9월 7일
Try this:
% Fake data
finalmatrix=sortrows(randi(10,30,3),1)
finalmatrix = 30×3
1 7 1 2 6 10 2 7 9 3 10 9 3 7 1 3 3 5 3 2 4 4 4 5 4 8 8 4 6 2
y = finalmatrix(:,1);
n=diff(find([true; diff(y)~=0; true]))
n = 10×1
1 2 4 3 1 5 3 5 4 2
splitmatrix=mat2cell(finalmatrix,n,size(finalmatrix,2));
splitmatrix{:}
ans = 1×3
1 7 1
ans = 2×3
2 6 10 2 7 9
ans = 4×3
3 10 9 3 7 1 3 3 5 3 2 4
ans = 3×3
4 4 5 4 8 8 4 6 2
ans = 1×3
5 2 1
ans = 5×3
6 2 2 6 10 1 6 1 6 6 6 2 6 5 5
ans = 3×3
7 3 9 7 3 7 7 4 8
ans = 5×3
8 9 7 8 8 2 8 3 3 8 2 5 8 9 8
ans = 4×3
9 6 6 9 9 7 9 4 7 9 1 6
ans = 2×3
10 8 7 10 6 3
  댓글 수: 4
Muhammad Asad
Muhammad Asad 2022년 9월 7일
Thanks once again.
If you add a command for my reference about above mentioned querry than i shall be very thankful to you. I am puzzling and my issue for plotting not resolved.
dpb
dpb 2022년 9월 7일
I got totally lost in the explanation above, but if @Bruno Luong's solution for splitmatrix is the right data, then
figure
hold on
cellfun(@(c)plot(c(:,2),c(:,3)),splitmatrix)
should be close to what you're looking for.
As always, "salt to suit"...

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by