Tôi muốn tạo một vòng lặp sẽ lặp qua nhiều chuỗi, nhưng không thể làm như vậy trong Matlab.vòng lặp foreach với các chuỗi trong Matlab
Điều gì làm việc là:
for i=1:3
if (i==1)
b='cow';
elseif (i==2)
b='dog';
else
b='cat';
end
disp(b);
end
và kết quả là:
cow
dog
cat
Nhưng những gì tôi muốn là một cái gì đó tao nhã hơn mà sẽ trông giống như:
for i=['cow','dog','cat']
disp (i);
end
và cung cấp cho các cùng một kết quả.
Có tùy chọn nào trong Matlab để thực hiện việc này không?
ADDITION:
tôi cần những lời như dây đàn sau này để sử dụng và không chỉ để hiển thị (các disp
đã được chỉ là một ví dụ). Tôi đã cố gắng sử dụng các mảng di động trong chương trình thật của tôi:
clear all;
close all;
clc;
global fp_a
global TEST_TYPE
global SHADE_METHODE
for fp_a=11:24
for shade={'full','fast'}
SHADE_METHODE=shade(1);
for test={'bunny','city'}
TEST_MODE=test(1);
fprintf ('fp_a:%d | test: %s | shade: %s',fp_a,TEST_TYPE,SHADE_METHODE);
ray_tracing;
end
end
end
Nó không làm việc như các giá trị ở lại như tế bào và không dây Tôi nhận được thông báo lỗi:
??? Lỗi khi sử dụng ==> fprintf Chức năng không được xác định cho đầu vào 'ô'.
* -Tôi không thực sự cần fprintf
Tôi chỉ sử dụng nó để kiểm tra xem các giá trị có đúng không.
** - ray_tracing
là mã của tôi sử dụng giá trị của các chuỗi
Sự cố trong phần bổ sung chỉ là cú pháp. Bạn cần sử dụng dấu ngoặc nhọn - 'test {1}' - để trích mảng char từ ô, không phải dấu ngoặc đơn thông thường - 'test (1)' - chỉ chọn ô đầu tiên trong mảng, không có gì hiệu quả ở đây. Hãy kiểm tra lại mã ví dụ của Oli; lưu ý anh ta đang sử dụng dấu ngoặc nhọn trong 'i {1}'. (Ngoài ra, không sử dụng globals nếu bạn có thể tránh nó.) –
Bạn nên sử dụng 'SHADE_METHODE = bóng râm {1};' thay vì 'SHADE_METHODE = bóng râm (1); ' – Oli
có thể trùng lặp của [Có một foreach trong MATLAB? Nếu vậy, nó hoạt động như thế nào nếu dữ liệu cơ bản thay đổi?] (Http://stackoverflow.com/questions/408080/is-there-a-foreach-in-matlab-if-so-how-does-it-behave -if-the-cơ bản-dữ liệu-c) –