I have a cell array with the structure as such,
linesegs = [1x2 double] [1x2 double]
I do some calculations on with some other data that is sent to a function within the current program using a function handle. This results in the following structure within the function.
B = [0 0 1 1];
I want insert this array in the next row of linesegs. Basically B would be split into two cells, one containing [0 0] and the other [1 1].
Everything that I've tried seems to be failing.

 採用された回答

Walter Roberson
Walter Roberson 2013 年 5 月 20 日

0 投票

linesegs(2,:) = mat2cell(B, 1, [2 2]);

6 件のコメント

Harold
Harold 2013 年 5 月 20 日
編集済み: Harold 2013 年 5 月 20 日
I have actually tried this and I keep getting this error,
Error using mat2cell (line 107) Input arguments, D1 through D2, must sum to each dimension of the input matrix size, [1 1].'
I should also note, that after the calculations are finished in the function the output is returned as a 1x1 cell.
Harold
Harold 2013 年 5 月 20 日
I just figured this out. After the function, I convert the cell to a matrix. Then I convert the matrix back to a cell and I get the format I need.
[1x2 double] [1x2 double]
My function is called by means of a function handle that I created, which points to a function that does the calculations I need. The function handle is called by arrayfun.
Walter Roberson
Walter Roberson 2013 年 5 月 21 日
You should consider using cellfun() instead of arrayfun()
Image Analyst
Image Analyst 2013 年 5 月 21 日
Why are you messing around with the complication of a cell array anyway? As I see it, a regular numerical matrix would handle these line segment coordinates just fine, and be a lot simpler.
Harold
Harold 2013 年 5 月 21 日
編集済み: Harold 2013 年 5 月 21 日
I will have to post up my program that I'm working on since I am having some more problems with it as well. I well edited this post with the link in a bit.
Salma Hassan
Salma Hassan 2020 年 4 月 2 日
could some help me in this issue above

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

その他の回答 (1 件)

Amith Kamath
Amith Kamath 2013 年 5 月 20 日

0 投票

This should work:
a = {[0 0], [0 0]}
b = [1 2 3 4]
a{1} = b(1:2) %choose the first two elements from b and assign to first in a.
a{2} = b(3:4) %choose third and fourth

1 件のコメント

Walter Roberson
Walter Roberson 2013 年 5 月 20 日
Note that is not "the next row".

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

カテゴリ

ヘルプ センター および File Exchange で Cell Arrays についてさらに検索

製品

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by