- 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
1 回表示 (過去 30 日間)
古いコメントを表示
Matthias von der Heyde
2023 年 7 月 17 日
コメント済み: Matthias von der Heyde
2023 年 7 月 18 日
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.

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!