function [lines1, max_vertex1] = matrix_to_arg(matrix1)
% convert a matrix into a vector of line-structs
% and, one vector.
[ROWS, COLS] = size(matrix1);
if(~(COLS==10))
fprintf('matrix1 must have 10 columns\n');
return;
end
max_vertex1 = matrix1(1, 7:10);
M = matrix1(:, 1:6);
for i=1:ROWS
lines1(i) = struct('point1', M(i,1:2), ...
'point2', M(i,3:4), ...
'theta', M(i,5), ...
'rho', M(i,6));
end
end
2
A
答えて
1
次のようにnum2cell
とdeal
を使用することができます。
% random data
M = rand(5000, 6);
% split each row to cell
point1 = num2cell(M(:,1:2),2);
point2 = num2cell(M(:,3:4),2);
theta = num2cell(M(:,5),2);
rho = num2cell(M(:,6),2);
% init struct
lines1 = struct('point1',[],'point2',[],'theta',[],'rho',[]);
lines1(size(M,1)).point1 = [];
% deal data to struct
[lines1(:).point1] = deal(point1{:});
[lines1(:).point2] = deal(point2{:});
[lines1(:).theta] = deal(theta{:});
[lines1(:).rho] = deal(rho{:});
0
あなたが探している行はこれです:
lines1 = arrayfun(@(i) struct('point1', M(i,1:2), 'point2', M(i,3:4), 'theta', M(i,5), 'rho', M(i,6)), 1:ROWS);
あなたがここにarrayfun
0
についての詳細を学ぶことができます
行列M
を正しい次元のセル配列に変換すると、
function [lines1, max_vertex1] = matrix_to_arg(matrix1)
% convert a matrix into a vector of line-structs
% and, one vector.
[ROWS, COLS] = size(matrix1);
if(~(COLS==10))
fprintf('matrix1 must have 10 columns\n');
return;
end
max_vertex1 = matrix1(1, 7:10);
M = mat2cell(matrix1(:, 1:6),ones(1,ROWS),[2 2 1 1]);
lines1 = struct('point1', M(:,1), ...
'point2', M(:,2), ...
'theta', M(:,3), ...
'rho', M(:,4));
end
EDIT:あなたはstruct
コンストラクタのベクトル化バージョンを使用することができますmat2cell
への呼び出しでROWS
でCOLS
を置き換えます。私はテストで次元の大きさを混乱させました...
関連する問題
- 1. VSコードから影を取り除くことは可能ですか
- 2. 私のコードでこの無限ループを取り除くには?
- 3. スプリング・キャッシュの部分データを取り除くことは可能ですか?
- 4. iOS In App Purchase確認ポップアップを取り除くことは可能ですか?
- 5. ループするMySQLクエリを書くことは可能ですか?
- 6. javascriptで剃刀コードを書くことは可能ですか?
- 7. このループを取り除く方法
- 8. キュウリのタグを取り出すことは可能ですか?
- 9. ハスケル、取り除くことができない可能性のあるインデントエラー
- 10. 次のコードを高速化することは可能ですか?
- 11. Var = 0を取り除くことでPythonコードを短くするには
- 12. Seleniumで次の要素を取得することは可能ですか
- 13. この読み取りロックを取り除くことはできますか?
- 14. mysqlクエリのセルデータから2行目を取り除くことが可能
- 15. valaでシステムレベルのコードを書くことが可能です
- 16. ケースステートメントをループで生成することは可能ですか?
- 17. COFFライブラリファイル(.lib)からデバッグ情報を取り除くことは可能ですか?
- 18. データとアライリストのループを取り除く
- 19. タイムラインの一部をループすることは可能ですか?
- 20. numpy:ブロードキャストでforループを取り除く
- 21. 豚:リスト内の変数にループを書くことは可能ですか?
- 22. WakeLockを取り除くことはできますか?
- 23. は、ブレード周りの各ループごとに可能です。@sectionsは可能です
- 24. R:forループとスピードコードを取り除く
- 25. Perl foreachループを1行に書くことは可能ですか?
- 26. ToDoアイテムをコードの外に置くことは可能ですか?
- 27. postgreでforeachループをこのようにすることは可能ですか?
- 28. 私のコードでNullPointerExceptionと私はそれを取り除く
- 29. 次のエラーを取り除くには?
- 30. Pythonでクローズドソースのアンドロイドプログラムを書くことは可能ですか?
あなたの答えは本当ですか? – anonymous
さて、私は1つの注意点を忘れました。これは数値配列に対してのみ機能します。しかしそうでなければ、はい、私は確信しています。どのようなエラーが出ますか?編集:はい、私の悪い、私はそれを更新するコードの入力ミス。 – souty
Broは、このコードは同じを達成していません。私はそれを試してみました。 – anonymous