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
轉換爲正確維度的單元格陣列,您可以使用struct
構造的矢量版本:
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
編輯:在通話與ROWS
更換COLS
到mat2cell
。我在測試中混淆了尺寸大小...
相關問題
- 1. R:擺脫循環和超速代碼
- 2. 不能擺脫Python循環
- 3. 擺脫循環?
- 4. 擺脫循環
- 5. Matlab擺脫循環
- 6. 如何擺脫Python中的循環(並縮短我的代碼)?
- 7. 是否有可能擺脫請求的Set-Cookie中的laravel_session?
- 8. 有沒有辦法擺脫foreach循環?
- 9. 擺脫循環依賴
- 10. 如何擺脫循環c
- 11. 無法擺脫while循環。
- 12. 我如何擺脫循環
- 13. 無法擺脫while循環?
- 14. Django:擺脫循環依賴
- 15. 如何擺脫Tapestry循環?
- 16. 如何擺脫循環?
- 17. 是否有可能將此代碼轉換爲for循環?
- 18. 是否有可能擺脫ChildWindow動畫是Silverlight?
- 19. 是否可以從我的代碼中刪除循環?
- 20. 是否有可能完全擺脫所謂的「虛假元組」?
- 21. 如何擺脫nodejs中的for循環
- 22. 擺脫R中的for循環
- 23. 如何擺脫c中的「if」循環?
- 24. 如何擺脫Bash中的循環?
- 25. 我如何擺脫Haskell中的循環?
- 26. 如何擺脫Perl中的循環?
- 27. 更改循環類型以擺脫效率低下
- 28. 我可以擺脫這個可怕的封鎖代碼嗎?
- 29. 擺脫奇怪的代碼
- 30. 擺脫泛型類型參數:是否有可能?
你確定你的答案? – anonymous
嗯,我忘了一個警告:這隻適用於數值數組。但是否則,是的,我確定。你會得到什麼錯誤?編輯:是的,我的壞,在代碼中的錯字,我會更新它。 – souty
兄弟,這段代碼沒有達到相同的效果。我嘗試過這個。 – anonymous