Outputting function into multiple columns of matrix
2 ビュー (過去 30 日間)
古いコメントを表示
michael hosseini
2019 年 7 月 16 日
コメント済み: michael hosseini
2019 年 7 月 17 日
I have a existing matrix M: r x 14 x d double
I have a function that takes in matrix: r x 6 x d double and it apparently outputs the same shape back.
The function manually names each column to a variable (say a1 - a6) , then outputs them in format [A1, A2, ..., A6]
I give it: M(:,[1:4 8:9],:), which is r x 6 x d, and I get back from function ans = r x 6 x d
However, when I am trying to re-insert the ans back into the same columns they came from (M(:,[1:4 8:9],:)), I get an error:
"Subscripted assignment dimension mismatch."
This is what I am trying:
M(:,[1:4 8:9],:) % outputs shape r x 6 x d double
M(:,[1:4 8:9],:) = MyFun(M(:,[1:4 8:9],:) )
function [A1, A2, A3, A4, A5, A6]= MyFun(vals,:) )
A1 = vals(:,1,:);
A2 = vals(:,2,:);
% And so on... Shape of each is 584 x 1 x 4
[A1, A2, A3, A4, A5, A6] % outputs shape r x 6 x d double
end
Is there a way to do this in one line similar to the above? Or is it just silly mistake etc.
Many thanks for any help
0 件のコメント
採用された回答
Shashank Sharma
2019 年 7 月 17 日
編集済み: Shashank Sharma
2019 年 7 月 17 日
Instead of returning [A1, A2, A3, A4, A5, A6] seperatly redifine your function to return AA.
Where, AA = [A1 A2 A3 A4 A5 A6];
when assigning to a variable from a function which returns an array of values, variables are assigned to in order of the returned values.
For eg,
function [x, y] = func %a function
z = func; %assign return value of func to z
In this case z contains only the value of x.
This is the reason for your error.
If you are not allowed to change your function, you can do the following,
[A1, A2, A3, A4, A5, A6] = MyFun(M(:,[1:4 8:9],:) );
M(:,[1:4 8:9],:) = [A1 A2 A3 A4 A5 A6];
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!