フィルターのクリア

How to set just RowNames in a Matrix

46 ビュー (過去 30 日間)
Tiago Dias
Tiago Dias 2018 年 3 月 7 日
編集済み: Birdman 2018 年 3 月 7 日
Hello, Let's assume I got a matrix 3x3
A = [1,2,3;4,5,6;7,8,9];
A.Properties.RowNames = {'row1','row2','row3'};
I got an error Field Assignment to a non-structure array object.
I just wanted to place names in rows and not to create a table. I want to keep as a double if possible.

採用された回答

Birdman
Birdman 2018 年 3 月 7 日
編集済み: Birdman 2018 年 3 月 7 日
Since you do not want to use table, which is really smart to use, I would suggest you to use cell array.
A=mat2cell(A,ones(1,size(A,1)),ones(1,size(A,2)));
A(:,2:end+1)=A(:,1:end);
A(:,1)={'row1','row2','row3'};
and it is easy to reach numeric content of the cell by typing
Anum=cell2mat(A(:,2:end))
  4 件のコメント
Tiago Dias
Tiago Dias 2018 年 3 月 7 日
and it is possible to turn de variable names off? it shows me A1 A2 A3 etc
Birdman
Birdman 2018 年 3 月 7 日
編集済み: Birdman 2018 年 3 月 7 日
It is not. It requires at least one nonempty character. And also as Stephen said below, array2table is also efficient and serves for you.
B=array2table(A,'RowNames',{'row1','row2','row3'})

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

その他の回答 (1 件)

Stephen23
Stephen23 2018 年 3 月 7 日
編集済み: Stephen23 2018 年 3 月 7 日
"It creates a table 3x1, and not a table 3x3 that was my goal"
So use the correct function to create it: array2table
This will create a table of the size that you want.
Using a table will be much simpler than forcing a "header" into a cell array and splitting numeric data into separate cells of a cell array. A table is the correct data class if you want a header.

カテゴリ

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by