need general coding/ command to separate matrix data

2 visualizaciones (últimos 30 días)
Muhammad Asad
Muhammad Asad el 6 de Sept. de 2022
Comentada: dpb el 7 de Sept. de 2022
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 comentarios
Stephen23
Stephen23 el 7 de Sept. de 2022
Keeping data together is usually better than splitting it apart. How will you process the data?
Muhammad Asad
Muhammad Asad el 7 de Sept. de 2022
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

Iniciar sesión para comentar.

Respuesta aceptada

Bruno Luong
Bruno Luong el 7 de Sept. de 2022
Editada: Bruno Luong el 7 de Sept. de 2022
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 comentarios
Muhammad Asad
Muhammad Asad el 7 de Sept. de 2022
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 el 7 de Sept. de 2022
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"...

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by