defining function which generates 3d array within a class. Different behavior in class versus command window
Afficher commentaires plus anciens
This code:
lam = @(t) 3*(1 + 0.8*cos(2*pi*t));
A1 = @(t) reshape([lam(t(:).'); lam(t(:).'); zeros(1, numel(t)); lam(t(:).')], [2, 2, numel(t)]);
tt=0:1/400:1-1/400;
A1stack=A1(tt);
generates a 2x2x400 array. This is what I want to happen. When I embed the code within a class function however, it returns a 2x800 array. How do I fix this?
6 commentaires
Steven Lord
le 12 Juin 2025
Can you show us the whole class method definition? I'm wondering if you have defined a variable in the method that's shadowing a function used by that code.
Barbara Margolius
le 12 Juin 2025
Perhaps you can add the command whos to the code immediately before the place where you included these lines of code and show us that output. That may indicate if you've shadowed a function with a variable.
plot = 42;
y = digraph();
z = @sin;
whos
% plot(1:10) % would not work due to the shadowing
Since the standalone code behaves as expected and the issue arises only within your class, it is very likely that a variable name inside your method or class is shadowing a built-in function like reshape, cos, or pi.
To diagnose this, please try adding the following just before the line where A1(tt) is evaluated in your class method:
disp('--- Function shadow check ---');
disp('reshape:'); which reshape
disp('cos:'); which cos
disp('pi:'); which pi
disp('--- Variables in scope ---');
whos
Then run your method and paste the output here. This will help determine whether a variable or property is unintentionally overriding a built-in function and causing the unexpected 2×800 result.
Barbara Margolius
le 18 Juin 2025
Steven Lord
le 18 Juin 2025
To close the loop, would you mind giving a brief description of what the error was?
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



