Der Code, den ich hier verwende, dient zur Veranschaulichung des möglichen Fehlers. Im Code habe ich drei Funktionen wie folgt definiert und versucht, sie zu visualisieren.Ist das ein Fehler in Matlab Funktionsaufruf?
die erste:
$$y_1(x)=5\sin(x)$$
Die zweite:
$$y_2(x)=12-8\cos(x)$$
Die 3. ist eine abschnittsweise Kombination der obigen beiden:
when x<0:
$$y_3(x)=y_1(x)$$
when x>=0:
$$y_3(x)=(y_1(x)+y_2(x))/2$$
Wenn ich den folgenden Code in Matlab ausführen , die als m2mPlot.m
gespeichert wird:
function m2mPlot
clear all
close all
clc
global a b c;
a=12;
b=8;
c=5;
t=-pi:.1:pi;
plot(t,y1(t),'b')
hold on
plot(t,y2(t),'m')
plot(t,y3(t),'r')
legend('y1','y2','y3')
function y=y1(t)
% The first function for testing
global c;
y=c*sin(t);
function y=y2(t)
% The 2nd function for testing
global a b;
y=a-b*cos(t);
function y=y3(t)
% The 3rd function for testing
if t<0 % It seems this logic value is always FALSE, why?
y=y1(t);
else
y=(y2(t)+y1(t))/2;
end
Ich habe:
, die in der dritten Unterfunktion der logische Ausdruck gibt an, dass: t < 0 ist immer FALSCH, egal welchen Wert t tatsächlich ist.
Ist das ein Fehler in Matlab? Wie kann man ein solches Problem vermeiden?
Sie sind richtig auf dem [ 'if' Verhalten] (http://www.mathworks.com/help/ matlab/ref/if.html # description): "Ein Ausdruck ist wahr, wenn sein Ergebnis nicht leer ist und nur Elemente ungleich Null (logisch oder reell numerisch) enthält. Andernfalls ist der Ausdruck falsch." – TroyHaskin
Vielen Dank! Ich habe den kleinen Unterschied vergessen, wenn das Eingabeargument kein Skalar ist. – user6043040