- 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 views (last 30 days)
Show older comments
Matthias von der Heyde
on 17 Jul 2023
Commented: Matthias von der Heyde
on 18 Jul 2023
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 Comments
Accepted Answer
Harald
on 17 Jul 2023
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
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!