Multiplying anonymous function by a vector
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Stanley Ka
le 22 Avr 2021
Modifié(e) : Walter Roberson
le 22 Avr 2021
I'm trying to plot 4 different graphs in respect to 4 different function handles for 10 revolutions using for loop. I've created a function file and a m-file but the error Operator '.*' is not supported for operands of type 'cell' just keeps popping out.
%% Function file
function [x,y] = my_polar(fhandle, N)
th = 0:0.01:2*pi;
for i =0:N-1
x = fhandle.*cos(th);
y = fhandle.*sin(th);
th = th+2*pi;
end
end
%% m-file
f1 = @(th) exp(0.01*th).*sin(5*th);
f2 = @(th) sin(10*th) + 0.15;
f3 = @(th) sin(0.5*th).*(0.85 + sin(th));
f4 = @(th) 10 + sin(2*pi.*th);
fset = {f1;f2;f3;f4};
for i=1:4
subplot(2,2,i);
[x,y] = my_polar(fset(i), 10);
plot(x,y);
title(char(fset(i)));
end
0 commentaires
Réponse acceptée
Cris LaPierre
le 22 Avr 2021
You have defined your function to have an input - th. Therefore, when you use your function handle, you have to supply it an input. Perhaps you meant to do the following?
x = fhandle(th).*cos(th);
The error message about 'cell' is because you add your function handles to a cell array, fset. When you use parentheses to index a cell array, it returns a cell array. Use braces to pass the function handle into the function.
[x,y] = my_polar(fset{i}, 10);
Your final error will be about trying to create a title from the function handle. You might find this answer insightful. You probably want to use func2str. Just be aware that it also does not work with cells.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!