Cell Arrays and Indexing?
Mostra commenti meno recenti
The goal of my code is to take an n-by-n logical array of values and output a cell vector containing the column indices of each true (1) element in the input matrix. The row index of the logical true values is the index of the cell in the cell vector, and the column index is the value(s) within the cell of the corresponding cell in the cell vector.
Here's an example of how it's supposed to work:
function output = input(A)
A =
0 1 0 1
1 1 0 1
1 0 1 0
0 0 0 0
output =
{[2 4], [1 2 4], [1 3], []}
Here's my code:
function opp = hw5_problem5(X)
opp = []; % initialize the matrix to empty
[~, col] = size(X); % setting the size of X to variable so it can change with input
for ii = 1:col
if X(ii) == 1
opp(ii) = opp; {ii}; % add previous cells of opp to new cells as iterations continue
else
opp(ii) = []; % if value of X(ii) == 0 no new values added to opp
end
end
end
I keep getting this error message:
Unable to perform assignment because the indices on the left side are not compatible with the size of the
right side.
Error in hw5_problem5 (line 6)
opp(ii) = opp, {ii}; %add previous cells of opp to new cells as iterations continue
Help please! Thanks :)
1 Commento
James Tursa
il 4 Apr 2020
You need to loop over the rows, not the columns. See below.
Risposta accettata
Più risposte (1)
Ameer Hamza
il 4 Apr 2020
This is an alternative to the looped version
A = [0 1 0 1
1 1 0 1
1 0 1 0
0 0 0 0];
[r, c] = find(A);
out = accumarray(r, c, [], @(x) {x});
if size(out,1) ~= size(A,1)
out{size(out,1)+1:size(A,1)} = [];
end
Categorie
Scopri di più su Descriptive Statistics and Insights in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!