Line comment change string cell shape
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
JackXu
am 20 Dez. 2019
Kommentiert: JackXu
am 20 Dez. 2019
I found when I use line comment to erase some my content for a string cell, the cell shape change to row from original column
like this
>> a={'first' ...
, 'second' ...
, 'third'}
a =
'first' 'second' 'third'
>> a={'first' ...
% , 'second' ...
, 'third'}
a =
'first'
'third'
I have already tried 2013a and 2015b, they shared the same result.
I just want to change my test case sometime quickly for a simple test, but that messed up the following code with my for loop will use like this
for a_n = a
a_n = a_n{:};
That will be good if I don't comment anything, but failed to only loop once with my first case.
Any answer about why the shape of string cell will change when there are line comments is appreciated.
2 Kommentare
Bhaskar R
am 20 Dez. 2019
I hope I understood your problem.
You have a cell matrix a
>> a={'first' ...
, 'second' ...
, 'third'}
a is a row matrix(shape is 1x3), if you comment any row/line of the a matrix, the shape of the matrix is converted to column matrix( that is 2x1 instread of 1x2), am I correct? if yes
you have used
...
in your matrix initialization that means continuous line that is equivalent to
a = {'first' , 'second','third'};
it is suggested you that remove "..." from the initialization so that you can preserve shape of the matrix a
Akzeptierte Antwort
Chien-Han Su
am 20 Dez. 2019
Bearbeitet: Chien-Han Su
am 20 Dez. 2019
I just try a two different line comment (matlab2019b), and here are the results,
(1)
>> a = {'A', 'B'}
a =
1×2 cell array
{'A'} {'B'}
(2)
>> a = {'A'
,'B'}
a =
2×1 cell array
{'A'}
{'B'}
You can see that matlab sees the second assignment equal to
a = {'A';'B'}
So a column cell array is assigned.
In your example,
a={'first' ...
% , 'second' ...
, 'third'}
equals to
a={'first' ... % , 'second' ...
, 'third'}
and
a={'first'
, 'third'}
Hence you get a column like the previous (2).
If you want to erase some content and keep the row shape at the same time, maybe you should also add '...' before the '%', namely,
a={'first' ...
... % , 'second' ...
, 'third'}
gives you
a =
1×2 cell array
{'first'} {'third'}
3 Kommentare
Chien-Han Su
am 20 Dez. 2019
I just come up with an idea to maintain your ways to switch on and off contents in the cell with the comment hotkey, you can try store your cell as column at first, then transpose it into a row befroe executing the loop, that is, replace
a={'first' ...
, 'second' ...
, 'third'}
with
a={'first' ...
; 'second' ...
; 'third'}
and before executing the loop, force the cell in the shape of row
a = a(:) % force 'a' into a column
% (This line above can be dropped if you are sure that 'a' is a column)
a = a'; % transpose 'a' into a row
for a_n = a
a_n = a_n{:};
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!