Error code : In an assignment A(I) = B, the number of elements in B and I must be the same.
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
When I type the following commands:
[X,Y] = meshgrid(0:.2:1, 0:.2:1);
surf(X,Y,mFunction(X,Y))
matlab gives me the following error :
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in mFunction (line 40)
L(i)=alpha.*MS3(i)+(1-alpha).*L(i-1);
How should I proceed? Thanks!
1 Commento
Image Analyst
il 4 Lug 2016
How are X and Y being used in mFunction? You're not showing that. Also, what is the value of i and alpha when it errors? By the way, do you know how to use the debugger?
Risposta accettata
Walter Roberson
il 4 Lug 2016
Your function is not vectorized. You will need to use
Z = arrayfun(@mFunction, X, Y);
surf(X, Y, Z, 'edgecolor', 'none')
but it would be much more efficient to vectorize your function.
At the very least you should pull the xlsread() out of the function, assign the appropriate extracted values to a variable in the calling code, and have the calling code pass the value in to the function. xlsread() can be pretty slow.
3 Commenti
Walter Roberson
il 4 Lug 2016
I have no idea what it calculates or how, since the comments took a vacation and never came back. But I would point out, for example, that
L=zeros(288,1);
L(25)=MS3(25);
for i=26:264;
L(i)=alpha.*MS3(i)+(1-alpha).*L(i-1);
end
could be replaced by
numalpha = length(alpha);
L = zeros(288, numalpha);
L(25,:) = MS3(25);
for i = 26:264;
L(i,:) = alpha.*MS3(i) + (1-alpha).*L(i-1,:);
end
That would not be the only required change.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Downloads in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!