Fixing Incompatible Sizes while Calculating Absolute Vorticity

I want to calculate the relative and absolute voriticity change using the following specifications. Then make a video out of it as it changes in height. However, I get errors with incompatible sizes and or dimensions. I do know whether or not the code for the video works...if anyone can help it would be much appreciated.
close all;
clear all;
clc;
curve = animatedline('LineWidth',2)
hold on;
grid on;
title('Temperant Absolute Vorticity Change');
partialu = 150; % in ms^-1
partialv = 120; % in ms^-1
partialx = (5:2100); %in meters
partialy = (9:4200); %in meters
T1 = (27:32);
T2 = (24:21);
dT = T2-T1;
dz = (30:168); % change in height
lapserate = dT./dz;
omega = 7.29*10^-5;
phi = 35; % change in latitude
dt = 0:60; % change in time in seconds
planetaryvort = 2*omega*sin(phi);
for i = 1:length(partialx)
for j = 1:length(partialy)
for t = 1:length(dt)
relativevort = partialv./partialx - partialu./partialy;
absolutvore = lapserate*(relativevort+planetaryvort)./dt;
F(i) = getframe(gca);
pause(0.01);
delete(head);
end
end
end
video = VideoWriter('Temperant Absolute Vorticity Change','Uncompressed AVI');
open(video)
writeVideo(video,F)

7 件のコメント

T2 is empty, so T2 - T1 is not compatible for subtraction.
After correcting this, you should correct for dT./dZ as well.
T1 = (27:32);
T2 = (24:21);
size(T1)
ans = 1×2
1 6
size(T2)
ans = 1×2
1 0
dT = T2-T1;
Error using -
Arrays have incompatible sizes for this operation.
Jonathon Klepatzki
Jonathon Klepatzki 2023 年 12 月 11 日
Hmm, that's weird. I changed it to 21:24 then it was followed by another error on the next line. dT = T2 - T1. I checked the script and it does show the numbers ready for calculating.
By the way, was the video code correct?
Star Strider
Star Strider 2023 年 12 月 11 日
It might be beter to define a specific constant value for the various vectors and use that constant value with the linspace function to define the vector lengths (the third argument) so that they are all compatible in that respect. Since you are not using their values for indices (only their lengths), that should work.
The VideoWriter and related calls look correct, although it should probably conclude with a close call.
Jonathon Klepatzki
Jonathon Klepatzki 2023 年 12 月 11 日
Thanks Star Strider. I fixed the issue by applying time and temperature increments to make the matrices the same.
Star Strider
Star Strider 2023 年 12 月 11 日
My pleasure!
Did everything else work after that?
Jonathon Klepatzki
Jonathon Klepatzki 2023 年 12 月 12 日
Sadly no. After I clicked run, it would not bring up the video. I think maybe perhaps the size maybe the problem with it.
Avni Agrawal
Avni Agrawal 2023 年 12 月 21 日
Hi Jonathon, can you share the updated code after the error fixes?

サインインしてコメントする。

 採用された回答

Nipun
Nipun 2023 年 12 月 26 日

0 投票

Hi Jonathon,
I understand that you are trying to calculate the relative and absolute vorticity change using the specifications as dictated by your code, but you are getting a "dimension incompatible" error.
On analyzing your code, I have found that "dT" can not be evaluated since "T1" and "T2" have different sizes.
T2 = 24:21
% T2 has size 1,0 since the end point is smaller than starting point
% to get a series 24 23 22 21, do:
T2 = 24:-1:21
However, the error will still persist since "T1" has size "1 x 6" and "T2" (after correction) has size "1 x 4"
MATLAB does not support subtraction in vectors of different lengths.
I recommend either fixing your declaration of "T1" and "T2" to make sure they have the same dimensions. Or you, may consider padding "T2" with zeros ro support the subtraction operation.
Hope this helps.
Regards,
Nipun

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

製品

質問済み:

2023 年 12 月 11 日

回答済み:

2023 年 12 月 26 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by