- MATLAB klarmachen, dass ich Falle mehrerer Treffer (selbst wenn du weißt, dass er nicht eintreten kann) der erste genommen werden soll: j = find(abs(u) == maxCorrAmp, 1);
- Vorab y definieren, z.B. mit y = 0; Dann sollte MATLAB verstehen, dass y ein skalarer Double sein wird.
Meine Variablengröße ist scheinbar nicht fest, obwohl sie dies sein sollte
2 次查看(过去 30 天)
显示 更早的评论
Ich habe einen fcn-Block in Simulink, der mir diesen Fehler ausgibt:
Error:'y' is inferred as a variable-size matrix, but its size is specified as inherited or fixed. Verify 'y' is defined in terms of non-tunable parameters, or select the 'Variable Size' check box and specify the upper bounds in the Size box.
Folgender Code ist im Block:
function y = fcn(u)
n=4.096; %Anzahl Perioden
f=1; %Signalfrequenz
radToGrad = 180/pi;
gradToRad = 1/radToGrad;
T=1/f; %Periodendauer
ts=0.001; %Abtastdauer aus solver
t=0:ts:(T*n - ts);
tCorr = [fliplr(-t(2:end)) t]; %Zeitvektor fuer Faltung
maxCorrAmp = max(abs(u)); %Absoluter Maximalwert der Kreuzkorrelation
j = find(abs(u) == maxCorrAmp); %Verschiebung suchen
y = tCorr(j+1); %Verschiebung berechnen
meinem Verständnis nach, ist y ein 1x1 double. Dies habe ich auch so bei den Eigenschaften angegeben, bekomme aber trotzdem die Fehlermeldung.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1435703/image.jpeg)
Ja, der Fehler geht weg, wenn ich die "variable size" checkbox aktiviere. Dann kann ich aber mit dem Wert in Simulink nicht weiterarbeiten.
0 个评论
采纳的回答
Harald
2023-7-17
Hallo Matthias,
generell bitte möglichst das Modell (gerne soweit wie möglich vereinfacht) anhängen, damit man Vorschläge direkt ausprobieren kann. Zwei Dinge, die ich versuchen würde:
Viele Grüße,
Harald
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!