MATLAB: Error: Invalid use of operator with nc files

.ncerrorifinvalidoperator

Hi
I have a code where i run a couple of nc-files. I have make a for loop so I can run it over all the time steps and for all the longitudes and latitudes.
But I got an error called "Invalid use of opretor in the line called "zx(:,1:ny) = (:,ny:-1:1)z(n);"
I dont know why and what can I do?
I want to find blocking in the northern hemisphere where I will call if GHGS > 0 or GHGN < -10 there is a blocking. Did I have make a correct if loop?
for i = 1:Nfiles
lon{i} = ncread(ncfiles(i).name, 'longitude'); nx = length(lon{i});
lat{i} = ncread(ncfiles(i).name, 'latitude'); ny = length(lat{i});
time{i} = ncread(ncfiles(i).name, 'time'); nt = length(time{i});
z{i} = ncread(ncfiles(i).name, 'z'); nz = length(z{i});
end
%Midler geopotentialet til et månedsmiddel
zmean = zeros([nx ny]);
blocks = zeros([nx]);
for n = 1:nt
z = ncread(ncfiles(i).name,'z',[1 1 n],[nx ny 1]);
zx(:,1:ny) = (:,ny:-1:1)z(n);
zmean = zmean + zx;
%pcolor(lon,lat,z');
%shading interp
%drawnow
GHGS = (zx(:,[151+[-1 0 1]])-zx(:,[131+[-1 0 1]]))/20;
GHGN = (zx(:,[171+[-1 0 1]])-zx(:,[151+[-1 0 1]]))/20;
for i=1:ny
blocks(i)=blocks(i)+1;
if GHGS > 0;
disp('The point is blocked')
elseif GHGN < -10;
disp('The point is blocked')
end
end
end

Best Answer

I have no idea, what (:,ny:-1:1)z(n) should do. Something essential is missing here. Maybe you mean - a bold guess:
zx(:,1:ny) = z(:,ny:-1:1) * z(n);
% ^ ^
In you other question this line is:
zx(:,1:ny) = z(:,ny:-1:1);
So something went wrong during editing.
By the way, follow the hints given in the editor:
% [151+[-1 0 1]] easier and more efficient:
151+[-1 0 1] % or
[150, 151, 152]
and
blocks = zeros(nx); % Without brackets
Note that this is equivalent to:
blocks = zeros(nx, nx); % not blocks = zeros(nx, 1)!
Because you use a single index running from 1 to ny:
for i=1:ny
blocks(i) = ...
I guess, that you want this instead:
blocks = zeros(1, ny); % or zeros(ny,1)
The line
if GHGS > 0;
does not need a trailing semicolon and might not do, what you expect: if requires a scalar condition, therefore Matlab evaluates implicitly:
if all(GHGS > 0) && ~isempty(GHGS)
I assume you mean GHGS(i).