Trying to create a multidimensional array
2 次查看(过去 30 天)
显示 更早的评论
I am trying to implement the formula below, where each is an element of the larger ψ vector of length g.
So far I have this
psi = zeros(1,g);
for i = 1:g
psi(i) = [zeros(h,(i-1)) eye(h) zeros(h, (N-i-h+1))]';
end
but I receive the error
"Unable to perform assignment because the left and right sides have a different number of elements."
which makes sense. Is there a way to do what I am attempting, or am I SOL?
0 个评论
采纳的回答
Dave B
2021-8-3
I'm not 100% sure I follow the goal, the code you've pasted appears to make g matrices, each with h columns and the number of rows is (i-1) + h + max((N-i-h+1),0)...(I think?)
What shape would you like the result to take? To store the matrices separately, you can use a cell array:
h=4;
g=3;
N=10;
psi = cell(1,g);
for i = 1:g
psi{i} = [zeros(h,(i-1)) eye(h) zeros(h, (N-i-h+1))]';
end
psi
If you're using h,g,N that produce consistent numbers of rows (as in the above case) you could store this in a 3-d matrix
h=4;
g=3;
N=10;
psi = zeros(N,h,g);
for i = 1:g
psi(:,:,i) = [zeros(h,(i-1)) eye(h) zeros(h, (N-i-h+1))]';
end
size(psi)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Discrete Math 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!