creating matrix out of another matrix

3 ビュー (過去 30 日間)
mehra
mehra 2019 年 9 月 9 日
コメント済み: mehra 2019 年 9 月 9 日
I have a results matrix of size 104*14. I want to create a matrix of size 8*13 in which u(1,1)=results((1:13),4) and....I tried to write the matrix like:
u_mean_Uund=[results(1:13),4; results(14:26),4;results(27:39),4;results(40:52),4;results(53:65),4;...
results(66:78),4;results(79:91),4;results(92:104),4]
But this shows the first column of the results matrix, I actually want a 8*13 matrix in which the arrays are all from column 4.
  2 件のコメント
Stephen23
Stephen23 2019 年 9 月 9 日
Your description contradicts itself: "I want to create a matrix of size 8*13..." but also "I actually want a 8*14 matrix...": so do you want an 8x13 or an 8x14 matrix?
mehra
mehra 2019 年 9 月 9 日
Check my edited answer.

サインインしてコメントする。

採用された回答

mehra
mehra 2019 年 9 月 9 日
I solved it using following for loop:
for nn=1:8
u_depth(nn,:)=transpose(results((13*(nn)-12):13*(nn),4));
end
  4 件のコメント
Bruno Luong
Bruno Luong 2019 年 9 月 9 日
編集済み: Bruno Luong 2019 年 9 月 9 日
"I explained why the older comment doesn't give the answer"
And Stephen has explained to you the opposite and I tested it
results=rand(104,14);
% your solution
for nn=1:8
u_depth(nn,:)=transpose(results((13*(nn)-12):13*(nn),4));
end
% Stephen's solution
out = reshape(results(:,4),13,8).';
isequal(u_depth,out)
It returns 1, meaning both gives the same ANSWER on a random input. So Stephen is right and you are wrong.
You just are not rigouruous person and lack patient or perhaps a bit of courtesy to discuss with Stephen.
mehra
mehra 2019 年 9 月 9 日
Well... I dont know niether you nor Stephen and I dont want to argue with anyone...i was rushing to get the answer as soon as possible, so I also worked on that... Anyway i think you cant judge people like this...and again I thanks everyone for their answers and their help.

サインインしてコメントする。

その他の回答 (1 件)

Stephen23
Stephen23 2019 年 9 月 9 日
編集済み: Stephen23 2019 年 9 月 9 日
out = reshape(results(:,4),13,8).';
out(:,14) = 4; % if you want an 8x14 matrix
  10 件のコメント
Stephen23
Stephen23 2019 年 9 月 9 日
"...but still you have not seen my problem..."
If I failed to understand your problem as you claim, how did I write code that returns exactly the same result as your loop (which you posted four hours later)?
>> results = rand(104,14);
>> for nn=1:8 % your loop
u_depth(nn,:)=transpose(results((13*(nn)-12):13*(nn),4));
end
>> out = reshape(results(:,4),13,8).'; % my simpler reshape
>> isequal(u_depth,out) % The same outputs!
ans =
1
That would require me to make two mistakes:
  1. to misunderstand your question (which is certainly possible),
  2. then to write strangely buggy MATLAB code that doesn't do what I want it to do (based on my incorrect understanding of your problem), but that coincidentally ends up doing exactly the same thing as your loop....
With such luck, I should go an buy a lotto ticket!
mehra
mehra 2019 年 9 月 9 日
Anyway i am happy that my solution also works

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by